2017-04-25 73 views
1

我为我的组织设置了CI/CD工作流程,但我错过了最后一块拼图。当然这是一个解决的问题,还是我必须写我自己的?码头工人CD工作流程 - 使码头主持人拉动新图像并部署它们

全图。

我正在AWS上运行一些EC2实例,每个运行在本地群集模式下的docker。一些服务正在这里运行,我已经通过docker service create ...手动启动。

当开发人员提交源代码时,会向jenkins发送触发器以提取新代码并构建新的Docker映像,然后将其推送到我的私有注册表。

一切都很好,最好在这里,但我如何获得新的图像到我的码头主机和正在运行的容器自动更新到新版本?

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

我发现v2tec/watchtower但它不是群体意识,也不能在写这个问题时从私人注册表中提取。

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

成本是一个问题,但时间不那么如此,所以我更倾向于写自己的解决方案,而不是我为此采用收费服务。

+0

这里当你提到私人注册表是Amazon EC2容器注册表或Dockerhub?您拥有的一个选项是使用远程SSH插件从jenkins SSH到群集主服务器,并在映像推送时提取新映像并更新服务。 – Ashan

+0

私人注册表我的意思是通过'码头拉注册表'使用码头注册表。感谢您使用ssh插件的建议。我会考虑这个。 – jbr

回答

0

您拥有的一个选项是使用SSH plugin从Jenkins SSH到swarm master,并在新图像被推送到注册表时提取新图像并更新服务。