我有一个 ECS 集群,其中有一个服务正在运行我定义的任务。它只是一个简单的烧瓶服务器,因为我正在学习如何使用 ECS。现在我正在尝试了解如何更新我的应用程序并使其无缝部署。
- 我从烧瓶服务器返回开始
Hello, World! (rev=1)
。 - 我修改我的
app.py
本地说Hello, World! (rev=2)
- 我重建 docker 映像,并推送到 ECR
- 由于我的图像仍然命名为
image_name:latest
,我可以简单地更新服务并强制执行新部署:aws ecs update-service --force-new-deployment --cluster hello-cluster --service hello-service
- 我的最小百分比设置为 100,最大值设置为 200%(使用滚动更新),所以我假设在关闭旧的 EC2 实例时应该设置一个新的 EC2 实例。我观察到(不断刷新 ELB HTTP 端点)是 rev=? 在消息中来回交替:
(rev=1)
然后(rev=2)
没有失败(循环,不是随机)。 - 然后过了一点点(可能是 30 秒?)翻转停止并出现新消息:
Hello, World! (rev=2)
- 在整个过程中,我注意到没有更多的 EC2 实例被启动。所以这一切一定是在同一个实例上发生的。
这里发生了什么?这是在 ECS 中更新应用程序的正确方法吗?