AWS - ECS - 如何在现有 ECS(带有 1 个 EC2)实例上重新部署更新的 Docker 映像?

AWS - ECS - How can I redeploy an updated Docker image on an existing ECS (with 1 EC2) instance?

首先,我在 AWS 中创建了一个包含 Docker 图片的存储库。

然后我创建了一个任务定义和一个 ECS/EC2 集群。最后,我使用集群和任务定义创建了一个服务。工作正常。

如何在现有集群上重新部署更新的 Docker 映像?

只是 'updating' 具有新(或现有)任务的服务不起作用。即使使用 'force new deployment' 选项也没有效果。

根据 AWS 文档,您真的不能这样做... 你可以在这里阅读 - https://docs.aws.amazon.com/cli/latest/reference/ecs/register-task-definition.html

仅"Create new revision of Task Definition" 任务定义 -> -> 创建新版本

它将在您的回购协议中使用 "latest" 版本(当然最好用最新标记它)或自己添加标记。

顺便说一句 - 作为 ci/cd 和 json 的一部分,我将对这些更新使用自动化流程,除非您已经准备好这样做。

如果您没有在容器定义中指定 ECR 映像的标签,它将始终获取最新的一个。因此,您有2种方法可以实现重新部署。

  1. 确保您的服务有足够的空间来部署新任务,例如,如果您想要的 Number of tasks 是 1,那么您必须将 Maximum percent 设置为 200 ,意味着您可以在部署时同时允许 1 * 200% = 2 个任务 运行,然后只需键入以下命令: aws ecs update-service --cluster <cluster name> --service <service name> --force-new-deployment

  2. 或者将镜像更新到ECR后,您可以手动杀死现有任务并创建一个新任务(通常创建过程应该由ECS自己完成,只要因为您的自动缩放配置设置正确)。