5. 持续集成部署

创建自动构建镜像,需要的步骤

  • 阿里的 code git (托管代码)

  • 阿里的镜像仓库管理 (code拖管代码有更新后,自动拉取并构建新的镜像)

  • Portainer 自动拉取镜像仓库的最新镜像并重新部署

创建git项目, 并提交到code.aliyun.com:

$ git init
$ git add .
$ git commit -am 'first commit'
$ git remote add origin https://code.aliyun.com/ldb/gitchat_blog.git
$ git push -u origin master

阿里容器镜像服务->镜像仓库->创建镜像仓库:

https://lsol-house-upload.oss-cn-hangzhou.aliyuncs.com/2019-01-28/QQ20191216-212850123.gif

如果构建慢,试试选取海外构建,这样会快点。

接着配置自动构建规则 构建->添加规则

https://lsol-house-upload.oss-cn-hangzhou.aliyuncs.com/2019-01-28/QQ20191216-213545.gif

到此,只要本地代码修改,提交 git ,阿里的容器镜像服务就会自动构建镜像

Portainer 部署 flask yml 文件:

# blog.yml

version: "3.5"
services:
blog:
   image: registry.cn-hangzhou.aliyuncs.com/liubadao/gitchat_blog
   networks:
      - www_net
   environment:
      - DATABASE_URL=database_url
      - VIRTUAL_HOST=blog.xxx.com
      - LETSENCRYPT_HOST=blog.xxx.com
   deploy:
      replicas: 2
      resources:
      limits:
         cpus: '0.50'
         memory: 300M
networks:
www_net:
   external: true

访问 Portainer > Stacks > Add stack

https://lsol-house-upload.oss-cn-hangzhou.aliyuncs.com/2019-12-16/e597305a-b8f9-4e35-9a37-56035ae903ff.wxls

查看部署成功后,我们需要做的就是阿里的容器镜像服务的镜像一但有新的版本,就自动拉取重新构建。 选择 Service webhook 复制后

https://lsol-house-upload.oss-cn-hangzhou.aliyuncs.com/2019-12-16/116cae7e-d9ec-484f-b9b5-e574906b2fb7.png

容器镜像的创建触发器

https://lsol-house-upload.oss-cn-hangzhou.aliyuncs.com/2019-01-28/QQ20191216-213948.gif

现在在本地 flask 上修改并提交后,查看构建状态,构建完成后,查看 blog.xxx.com 查看是否重新部署:

# /web/blog/app/__init__.py

from flask import Flask
import os

def create_app():
   app = Flask(__name__)

   @app.route('/')
   def index():
      return '六把刀个人博客第二次修改{}'.format(os.environ.get('DATABASE_URL'))

   return app

git 提交新的修改:

$ git commit -am 'tow commit'
$ git push

之后就可以在阿里上观看构建状态,完成后,Portainer 就会自动拉取并重新部署