2017-04-25 75 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,並在新圖像被推送到註冊表時提取新圖像並更新服務。