0

我目前正在嘗試使用CodePipeline自動化我們的開發過程。我的碼頭應用程序從Source(Github) - > Builds(AWS CodeBuild) - > Deploy中獲取。在最終部署過程中,我無法修改我的任務定義並重新啓動羣集任務。我知道我需要一個CloudFormation模板來執行這些操作,但沒有太多關於如何使用CloudFormation完成部署過程的文檔(修改我的任務定義並更新我的任務)。有沒有另一種方法通過AWS自動部署我的容器?Docker與AWS持續集成

+0

你在哪裏部署?雖然有一些腳本來更新服務,但Amazon EC2容器服務可以輕鬆部署Docker容器。 – stdunbar

+0

我正在嘗試部署到EC2容器服務。我知道我必須更新任務定義並將服務指向已部署的新映像。有沒有現成的模板可以讓我觸發CloudFormation來爲我做更新服務? – Serey

回答

0

如果您從CloudFormation部署了原始服務,那麼CloudFormation可以非常容易地將新任務定義部署到ECS上。

這裏是CloudFormation將如何部署爲您服務到EC2集裝箱服務一個很好的入門:http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ecs.html

一旦你擁有了一切從CloudFormation部署您對部署2種選擇: 1)更新CloudFormation模板與您需要的新部署組件,它將爲您創建更改集並更新您的堆棧。 2)僅使用CloudFormation部署服務並將任務定義作爲參數。這將允許您只修改堆棧的輸入,而不是每次都更新整個內容。

當您在堆棧中更新CloudFormation時,CloudFormation將自動嘗試併爲您執行藍/綠部署。

+0

謝謝你的幫助戴維斯。只是重新迭代,我應該使用這個模板來管理我的ECS實例/容器/圖像,並在我的管道中使用它。但無論如何,我可以修改這個腳本,或者是否有任何現有的腳本將重新啓動我的任務指向:最新的圖像? – Serey

+0

我過去的做法是使用一個CF模板爲我想要部署的每個服務構建ECS羣集和一個模板。 如果要將服務更新爲最新的任務定義/泊塢窗圖像,請將CF更改爲指向最新的ECR圖像/任務定義(無論您將哪個設置爲模板參數)。 CF會爲你部署它。您可以通過控制檯或通過CLI和腳本將其寫入CI/CD管道。 我個人更喜歡將ECR圖像作爲參數,因爲它會更新和重新部署任務定義 – davis190

+0

我想我把所有的東西都放在一起,我唯一缺少的是一個CF模板,它將我的任務定義指向成功構建的最新版本,感謝您的幫助! – Serey

0

試錯用不同的方法後,最好的方式來更新您的ECS任務定義和服務是通過AWS直接更新他們的方案通過AWS CodeBuild在buildspec.yml的post_build部分中使用CLI。您甚至可以使用使用提交ID設置的環境變量來跟蹤每個圖像的標記!