V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
daijinming
V2EX  ›  程序员

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

  •  
  •   daijinming · 2019-03-08 11:51:27 +08:00 · 3963 次点击
    这是一个创建于 1873 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    11 条回复    2019-03-08 14:42:06 +08:00
    HuHui
        1
    HuHui  
       2019-03-08 12:03:59 +08:00
    直接在代码更新到时候主动去 pull
    daijinming
        2
    daijinming  
    OP
       2019-03-08 12:07:22 +08:00
    @HuHui 镜像由开发上传到镜像服务器,然后在服务器上 pull,现在是割裂的,当前的部署思路是这样的: https://www.jianshu.com/p/5c855f42c569
    azh7138m
        3
    azh7138m  
       2019-03-08 12:17:32 +08:00 via Android
    daijinming
        4
    daijinming  
    OP
       2019-03-08 12:37:19 +08:00
    @azh7138m 感觉有点杀鸡用牛刀了,其实我就是想在执行 docker pull 获得输出信息中包含了新版本,然后重启容器。我主要是不太清楚执行 os.system 是否会输出字符串,然后正则表达判断下,决定是否重启
    anubu
        5
    anubu  
       2019-03-08 12:57:21 +08:00   ❤️ 1
    直接把 docker-compose down 这句命令去掉不就可以了吗?还是我理解的不太对。每隔 10 分钟就直接 pull 和 up,有更新就会 pull 到新镜像,up 就会使用新镜像重建容器,没更新就 pull 不到镜像,up 也不会造成任何影响。
    daijinming
        6
    daijinming  
    OP
       2019-03-08 13:16:47 +08:00
    @anubu 尝试下去掉`docker-compose down`确实没有关系,只是不太确定每 10 分钟执行一次`docker-compose up`,如果没有更新的话,会不会对容器造成重启
    CFO
        7
    CFO  
       2019-03-08 13:22:45 +08:00 via Android
    watchtower 了解一下?
    daijinming
        8
    daijinming  
    OP
       2019-03-08 13:25:19 +08:00
    @CFO 三楼也推荐来着,我看来下,和我的情况不是太适合。我主要依赖 docker-compose
    daijinming
        9
    daijinming  
    OP
       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
        10
    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
        11
    anubu  
       2019-03-08 14:42:06 +08:00
    @daijinming 如果镜像和 compose file 没有变化,up 命令不会重启或重建原容器,不会对原容器有任何影响。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3172 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 240ms · UTC 14:26 · PVG 22:26 · LAX 07:26 · JFK 10:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.