美文网首页
采用Python脚本部署Docker镜像

采用Python脚本部署Docker镜像

作者: elef | 来源:发表于2019-03-07 14:48 被阅读163次

上一篇手工部署私有镜像太麻烦,CI来帮忙谈到手工部署Docker镜像的繁琐,仅仅一个小小的修改就需要经历5个步骤:

1、编写代码
2、制作镜像
3、推送镜像到私有镜像库
4、更新服务器本地镜像
5、重启服务器容器

在V2EX上征求了很多V友的意见,大家都提到了CI/CD,启用Jenkins等等。但是我还是想尝试下使用Python脚本的方式。

镜像仓库

首先在阿里云镜像服务控制台下创建一个镜像仓库,接下来就是处理前三步,将代码转镜像,推送到镜像仓库。

创建Python脚本

自动化脚本文件 push.py

import os
#定义镜像名称
imagename = 'djm/appdemo1'
registry_username = input("输入镜像库帐号:")
registry_password = input("输入镜像库密码: ")
#构建镜像
cmd_build = 'docker build -t {} .'.format(imagename)
os.system(cmd_build)

#开始推送镜像
cmd_login = 'docker login --username={} --password={} registry.cn-beijing.aliyuncs.com'.format(registry_username,registry_password)
cmd_tag = 'docker tag {}:latest registry.cn-beijing.aliyuncs.com/{}:latest'.format(imagename,imagename)
cmd_push = 'docker push registry.cn-beijing.aliyuncs.com/{}:latest'.format(imagename)
os.system(cmd_login)
os.system(cmd_tag)
os.system(cmd_push)

然后运行 python3 push.py

服务器上部署Docker镜像

接下来就只剩下两步了:

4、更新服务器本地镜像
5、重启服务器容器

在开发机器机器上一般都是运行类似docker run -it --rm -p 5000:80 --name appdemo1_sample djm/appdemo1这样的语句来启动容器,但是在正式服务器还是采用Docker-Compose比较适用一些。

如果服务器上之前没有安装过docker-compose,首先还是先安装一下:

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#如果有执行权限问题执行下面的语句
$sudo chmod +x /usr/local/bin/docker-compose
#测试安装是否成功
$ docker-compose --version

编排脚本 docker-compose.yml

appdemo1: 
    image: registry.cn-beijing.aliyuncs.com/djm/appdemo1:latest
    ports:
      - "5000:80"
    restart: always
    container_name: appdemo1_container

自动化脚本文件 pull.py

import os
#定义镜像名称
imagename = 'registry.cn-beijing.aliyuncs.com/djm/appdemo1:latest'
cmd_pull = 'docker pull {}'.format(imagename)
cmd_down = 'docker-compose down'
cmd_up = 'docker-compose up'

os.system(cmd_pull)
os.system(cmd_down)
os.system(cmd_up)

然后运行 python3 pull.py

这样整体流程由之前的5步精简为3步

1、编写代码
2、构建镜像,推送镜像到镜像库 python3 push.py
3、服务器上拉去镜像库最新镜像,重启Docker容器 python3 pull.py

源码地址:https://github.com/daijinming/PythonScript 下的 chapter1 目录

相关文章

网友评论

      本文标题:采用Python脚本部署Docker镜像

      本文链接:https://www.haomeiwen.com/subject/iuucpqtx.html