Docker 撰写和 Fargate 回滚
Docker compose and Fargate rollbacks
我正在尝试通过设置回滚策略来改进我的服务,以防我的更改使容器崩溃并保持任务退出。
上下文:
我有一个简单的服务,我更新更改标签。
services
web:
image: AWS-Account-Id.dkr.ecr.us-east-1.amazonaws.com/my-service:1
environment:
- ENV=dev
ports: ["80:80"]
我对 docker 图像进行了一些更改,构建、标记并将其推送到 ECR。然后将标签更新为 2(例如)和 运行 docker compose up
.
假设我引入了一个错误,容器启动但随后停止(由于错误)它将不断尝试启动和停止容器并出现错误:Essential container in task exited
在 docker-compose 中有没有办法设置一个条件,如果它尝试启动容器 web
2 次并且任务无法达到并保持 [=32] 的状态=]ning,回滚更改或执行 cloudformation 取消更新操作?
有一个监听80端口的负载均衡器,我还添加了健康检查
healthcheck:
test: ["CMD", "curl", "-f", "/status"]
interval: 1m
timeout: 10s
retries: 2
start_period: 40s
但我无法让它工作。任务不断退出,cloudformation 部署继续进行。
这不是直接的方法,但您可以考虑这种方法:
- 创建 Wait Condition and a WaitCondition Handle 资源。
- 校准任务/容器启动通常需要多长时间并相应地设置超时。
- 将应用程序配置为 post 在成功设置时向端点 URL 发出成功信号。
- 确保服务和等待条件句柄开始并行更新/创建。
如果时间超过超时时间,等待条件句柄将回滚。
需要考虑的事情:在每次操作时,都需要重新创建等待条件句柄和等待条件资源。简单的方法是修改资源的逻辑 id。可以有一个参数/模板哈希计算器,它将哈希作为后缀添加到等待条件资源。因此,如果参数/模板发生变化,将自动重新创建等待条件资源。
我正在尝试通过设置回滚策略来改进我的服务,以防我的更改使容器崩溃并保持任务退出。
上下文: 我有一个简单的服务,我更新更改标签。
services
web:
image: AWS-Account-Id.dkr.ecr.us-east-1.amazonaws.com/my-service:1
environment:
- ENV=dev
ports: ["80:80"]
我对 docker 图像进行了一些更改,构建、标记并将其推送到 ECR。然后将标签更新为 2(例如)和 运行 docker compose up
.
假设我引入了一个错误,容器启动但随后停止(由于错误)它将不断尝试启动和停止容器并出现错误:Essential container in task exited
在 docker-compose 中有没有办法设置一个条件,如果它尝试启动容器 web
2 次并且任务无法达到并保持 [=32] 的状态=]ning,回滚更改或执行 cloudformation 取消更新操作?
有一个监听80端口的负载均衡器,我还添加了健康检查
healthcheck:
test: ["CMD", "curl", "-f", "/status"]
interval: 1m
timeout: 10s
retries: 2
start_period: 40s
但我无法让它工作。任务不断退出,cloudformation 部署继续进行。
这不是直接的方法,但您可以考虑这种方法:
- 创建 Wait Condition and a WaitCondition Handle 资源。
- 校准任务/容器启动通常需要多长时间并相应地设置超时。
- 将应用程序配置为 post 在成功设置时向端点 URL 发出成功信号。
- 确保服务和等待条件句柄开始并行更新/创建。
如果时间超过超时时间,等待条件句柄将回滚。
需要考虑的事情:在每次操作时,都需要重新创建等待条件句柄和等待条件资源。简单的方法是修改资源的逻辑 id。可以有一个参数/模板哈希计算器,它将哈希作为后缀添加到等待条件资源。因此,如果参数/模板发生变化,将自动重新创建等待条件资源。