求一段代码的优化,判断 Docker 本地镜像版本是否需要更新,然后再重启容器

2019-03-08 11:51:27 +08:00
 daijinming

主要逻辑就是查看 1、拉取镜像库中的最新镜像,2、执行 docker-compose down 和 up (重启 docker 容器), 我考虑将这个脚本每 10 分钟自动运行,首先检查是否有更新,如果有更新再拉取镜像,重启容器,没有更新的容器就再等待,不再重启容器 代码地址

3967 次点击
所在节点    程序员
11 条回复
HuHui
2019-03-08 12:03:59 +08:00
直接在代码更新到时候主动去 pull
daijinming
2019-03-08 12:07:22 +08:00
@HuHui 镜像由开发上传到镜像服务器,然后在服务器上 pull,现在是割裂的,当前的部署思路是这样的: https://www.jianshu.com/p/5c855f42c569
azh7138m
2019-03-08 12:17:32 +08:00
daijinming
2019-03-08 12:37:19 +08:00
@azh7138m 感觉有点杀鸡用牛刀了,其实我就是想在执行 docker pull 获得输出信息中包含了新版本,然后重启容器。我主要是不太清楚执行 os.system 是否会输出字符串,然后正则表达判断下,决定是否重启
anubu
2019-03-08 12:57:21 +08:00
直接把 docker-compose down 这句命令去掉不就可以了吗?还是我理解的不太对。每隔 10 分钟就直接 pull 和 up,有更新就会 pull 到新镜像,up 就会使用新镜像重建容器,没更新就 pull 不到镜像,up 也不会造成任何影响。
daijinming
2019-03-08 13:16:47 +08:00
@anubu 尝试下去掉`docker-compose down`确实没有关系,只是不太确定每 10 分钟执行一次`docker-compose up`,如果没有更新的话,会不会对容器造成重启
CFO
2019-03-08 13:22:45 +08:00
watchtower 了解一下?
daijinming
2019-03-08 13:25:19 +08:00
@CFO 三楼也推荐来着,我看来下,和我的情况不是太适合。我主要依赖 docker-compose
daijinming
2019-03-08 13:26:24 +08:00
@anubu ‘ If there are existing containers for a service, and the service ’ s configuration or image was changed after the container ’ s creation, docker-compose up picks up the changes by stopping and recreating the containers (preserving mounted volumes). ’ 这句话是不是还能理解为如果镜像没有变化,就不重启容器
yuikns
2019-03-08 13:38:59 +08:00
If you want to force Compose to stop and recreate all containers, use the
`--force-recreate` flag.

你不 `--force-recreate`,没变化是不动的。
anubu
2019-03-08 14:42:06 +08:00
@daijinming 如果镜像和 compose file 没有变化,up 命令不会重启或重建原容器,不会对原容器有任何影响。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/542444

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX