ECS 使用 ECR 自动部署

Posted

技术标签:

【中文标题】ECS 使用 ECR 自动部署【英文标题】:ECS auto deploy with ECR 【发布时间】:2019-04-29 20:23:21 【问题描述】:

我正在使用 GitHub、Jenkins、AWS ECR、AWS ECS。

我想在 GitHub 有新提交时自动部署。 当 GitHub 有新的提交时,GitHub 将 webhook 发送到 Jenkins,Jenkins 构建图像并使用标签“最新”推送到 ECR。

我想知道如何让我的 ECS 服务重新启动任务并在 ECR 映像更改时自动重新部署映像?

【问题讨论】:

你可能想在devops.stackexchange.com 中询问 【参考方案1】:

请勿在此设置中使用 latest。让 Jenkins 为图像选择一个标签(可能基于源代码控制提交 ID、源代码控制标签名称或时间戳)。赋予它更新 ECS 任务的能力,然后(一旦发生构建并通过适当的启动前测试)让 Jenkins 将任务中的图像标签更改为刚刚构建的内容。 ECS 会看到镜像发生变化,拉取新镜像,并相应地启动容器。

这样做的另外两个充分理由:如果您有明确的版本,您可以拥有一个预生产集群,在那里部署东西,运行测试,然后将相同的版本部署到生产;如果部署失败,您可以通过手动将标签设置回昨天的构建直接回滚,如果您拥有的唯一版本是latest,这是不可能的。

【讨论】:

Jenkins如何更改任务中的image标签? 也可以使用 --force-new-deployment 参数,它会告诉 ECS 从 ECR 拉取最新的容器镜像,而无需创建新任务。 docs.aws.amazon.com/cli/latest/reference/ecs/…

以上是关于ECS 使用 ECR 自动部署的主要内容,如果未能解决你的问题,请参考以下文章

CodePipeline:ECR 源 + ECS 部署配置

Github 操作将 docker 部署到 AWS ECS ECR

AWS ECS:在 ECR 中强制重新部署新的最新映像

如何使用 Jenkins 将 Docker 容器从 Amazon ECR 自动部署到 Kubernetes

ECS 服务 - 使用新的 Docker 映像自动部署

使用 Jenkins 或 Job Scheduler 在 AWS ECS 上自动部署 Docker 容器