上一篇手工部署私有镜像太麻烦,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 目录
网友评论