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设置的环境变量来跟踪每个图像的标记!