【问题标题】:AWS - ECS - How can I redeploy an updated Docker image on an existing ECS (with 1 EC2) instance?AWS - ECS - 如何在现有 ECS(带有 1 个 EC2)实例上重新部署更新的 Docker 映像?
【发布时间】:2019-05-25 18:11:48
【问题描述】:

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

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

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

仅使用新(或现有)任务“更新”服务是行不通的。即使使用“强制新部署”选项也无效。

【问题讨论】:

    标签: amazon-web-services amazon-ecs


    【解决方案1】:

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

    仅通过“创建任务定义的新版本” 任务定义 -> -> 创建新修订版

    它将在你的仓库中使用“最新”版本(当然最好用最新的标签)或自己添加标签。

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

    【讨论】:

    • 请解释如何使用任务定义的“新修订版”来更新集群/服务上的 Docker 映像/容器。并请解释我如何将新图像推送到 ECR,以便它自动重新部署到 ECS / EC2 实例上。
    • @tm1701:嗨。你有机会得到你的问题的答案吗?我也在看...
    • @Shams Larbi - 页面上的答案就是答案。
    【解决方案2】:

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

    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 自己完成,只要你的 Auto Scaling配置正确)。

    【讨论】:

    • 谢谢!选项 1 对我有用。我认为添加最低健康应该为 0 是明智的。这很有效。如果您同意,请添加。
    猜你喜欢
    • 2019-09-10
    • 2019-01-25
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 2016-04-22
    • 2021-06-05
    • 2019-04-05
    • 1970-01-01
    相关资源
    最近更新 更多