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种方法可以实现重新部署。
确保您的服务有足够的空间来部署新任务,例如,如果您想要的 Number of tasks
是 1,那么您必须将 Maximum percent
设置为 200 ,意味着您可以在部署时同时允许 1 * 200% = 2 个任务 运行,然后只需键入以下命令:
aws ecs update-service --cluster <cluster name> --service <service name> --force-new-deployment
或者将镜像更新到ECR后,您可以手动杀死现有任务并创建一个新任务(通常创建过程应该由ECS自己完成,只要因为您的自动缩放配置设置正确)。
首先,我在 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种方法可以实现重新部署。
确保您的服务有足够的空间来部署新任务,例如,如果您想要的
Number of tasks
是 1,那么您必须将Maximum percent
设置为 200 ,意味着您可以在部署时同时允许 1 * 200% = 2 个任务 运行,然后只需键入以下命令:aws ecs update-service --cluster <cluster name> --service <service name> --force-new-deployment
或者将镜像更新到ECR后,您可以手动杀死现有任务并创建一个新任务(通常创建过程应该由ECS自己完成,只要因为您的自动缩放配置设置正确)。