我正在为我的组织设置CI/CD工作流,但我遗漏了拼图的最后一块。当然,这是一个已经解决的问题,还是我必须自己写?
完整的图景。
我在亚马逊网络服务上运行了几个EC2实例,每个实例都在其本机群模式下运行docker。有几个服务正在运行,我是通过docker service create ...
手动启动的。
当开发人员提交源代码时,会向jenkins发送一个触发器,以提取新代码并构建新的docker镜像,然后将其推送到我的私有注册表。
到目前为止,一切都很好,但是我如何将新镜像放到我的docker主机上,并将运行的容器自动更新到新版本?
Docker文档声明(here),当一个新的镜像被推送到注册中心时,它可以向可配置的端点发送事件。这就是我想通过让我的docker主机自动做出反应,然后拉出新的镜像,并使用新版本(具有相同的环境标志、标签等)停止、销毁和重新启动服务,但我找不到任何适合我的用例的解决方案。
我已经找到了v2tec/watchtower,但在我写这个问题的时候,它还不是群感知的,也不能从私有注册表中拉出。
我最好想要一个docker镜像,我可以将其部署在docker管理器上,它侦听注册表事件(在将注册表配置指向它之后),并执行所需的魔术。
成本是一个问题,但时间不是问题,所以我更倾向于编写自己的解决方案,而不是采用基于费用的服务。
发布于 2017-04-26 23:24:38
您有一种选择,就是使用SSH plugin从Jenkins使用SSH到swarm master,并在新镜像被推送到注册表时拉取新镜像并更新服务。
https://stackoverflow.com/questions/43620001
复制相似问题