Docker 与 AWS 的持续集成

Docker Continuous Integration with AWS

我目前正在尝试使用 CodePipeline 自动化我们的开发流程。我的 docker 应用程序从 Source(Github) -> Builds(AWS CodeBuild) -> Deploy 获取。在最后的部署过程中,我在修改任务定义和重新启动集群任务时遇到了问题。我知道我需要一个 CloudFormation 模板来执行这些操作,但是关于如何使用 CloudFormation 完成部署过程(修改我的任务定义和更新我的任务)的文档并不多。有没有其他方法可以通过 AWS 自主部署我的容器?

如果您从 CloudFormation 部署了原始服务,那么 CloudFormation 可以非常轻松地将新任务定义部署到 ECS 上。

这里是 CloudFormation 如何将服务部署到 EC2 容器服务的一个很好的开端:http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ecs.html

从 CloudFormation 部署完所有内容后,您有 2 个部署选项: 1) 使用您需要的新部署部分更新 CloudFormation 模板,它将为您创建一个更改集并更新您的堆栈。 2) 仅使用CloudFormation 部署服务并将任务定义作为参数。这将允许您只修改堆栈的输入,而不是每次都更新整个内容。

当您在堆栈中更新 CloudFormation 时,它会自动尝试并为您执行 blue/green 部署。

对于您描述的场景,您可能想试试这个示例https://github.com/awslabs/ecs-refarch-continuous-deployment

在使用不同方法反复试验后,更新 ECS 任务定义和服务的最佳方法是通过 AWS buildspec.yml 的 post_build 部分中的 AWS CLI 直接更新它们代码构建。您甚至可以使用使用提交 ID 设置的环境变量来跟踪每个图像的标签!