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