Jerry's Blog

Recording what I learned everyday

View on GitHub


5 May 2021

Docker 7 -- Travis CI 和 AWS

by Jerry Zhang

Travis CI

注册账号后,需要添加一个文件叫.travis.yml。同时需要使用AWS的elasticbeanstalk服务,开启一个app和env。

language: generic
sudo: required
services:
  - docker

before_install:
  - docker build -t jerry4013/docker-react -f Dockerfile.dev .

script:
  - docker run -e CI=true jerry4013/docker-react npm run test

deploy:
  provider: elasticbeanstalk
  region: "us-east-1"
  app: "docker-react"
  env: "Dockerreact-env"
  bucket_name: "elasticbeanstalk-us-east-1-198449142657"
  bucket_path: "docker-react"
  on:
    branch: master
  access_key_id: $AWS_ACCESS_KEY
  secret_access_key: $AWS_SECRET_KEY

还需要在AWS中新建一个IAM,User name随便起个名字,比如docker-react-travis-ci。然后勾选上Programmatic access。然后选Attach existing policies directly。然后搜索beanstalk,勾选AdministratorAccess-AWSElasticBeanstalk。最后点Create User即可。

注意:这个access key只能看一次,所以必须在这时把ID和密码复制下来,以后再也无法看到了。如果一旦丢失,只能重新创建一个。

环境变量$AWS_ACCESS_KEY$AWS_SECRET_KEY需要在Travis里设置成刚刚创建的key。

开放80端口

在AWS中,写Dockerfile需要开放80端口。同时,最好不要用单独一个点来表示当前目录,最好改成./

FROM node:alpine

USER node

RUN mkdir -p /home/node/app

WORKDIR /home/node/app

COPY --chown=node:node package.json ./
RUN npm install
COPY --chown=node:node ./ ./
RUN npm run build
 
FROM nginx
EXPOSE 80
COPY --from=0 /home/node/app/build /usr/share/nginx/html

重新push后,AWS就会自动部署新的代码。部署完成后,点URL即可进入网站。

关闭所有服务

在Elastic Beanstalk dashboard,在左边选择Applications,选择要删除的应用,右上的Actions里,选择删除即可。

tags: Docker