我正在为我的组织设置CI / CD工作流,但我错过了最后的难题。当然这是一个已解决的问题,还是我必须自己编写?

完整图片。

我在AWS上运行一些EC2实例,每个实例都以其本机群模式运行docker。我在这里通过docker service create ...手动启动了一些服务。

当开发人员提交源代码时,触发器将发送给jenkins以提取新代码并构建新的docker镜像,然后将其推送到我的私有(private)注册表中。

到这里一切都很好,但是如何将新镜像放置到我的Docker主机上,并且正在运行的容器会自动更新到新版本?

Docker文档指出(here),当新镜像被推送到注册表时,注册表可以将事件发送到可配置的端点。这就是我想通过让我的Docker主机自动反应的原因,然后使用该新版本(具有相同的env标志,标签等)来拉新镜像并停止,销毁和重新启动服务,但是我没有找到任何适合我用例的解决方案。

我已经找到了v2tec/watchtower,但是在编写此问题时它并不具有蜂群意识,也无法从私有(private)注册表中提取。

最好是我想要一个可以在我的docker管理器上部署的docker镜像,该镜像监听注册表事件(在将注册表配置指向它之后)并执行我需要的魔术。

成本是一个问题,但是时间却不那么多,因此与采用收费服务相比,我更倾向于编写自己的解决方案。

最佳答案

您拥有的一种选择是SSH使用SSH plugin从Jenkins集中主服务器,并在将新镜像推送到注册表时拉出新镜像并更新服务。

关于docker - Docker CD工作流程-使Docker主机提取新镜像并部署它们,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43620001/

10-10 18:31
查看更多