首页 > 解决方案 > AWS ECS 更新服务擦除 mongo 容器

问题描述

我有一个使用 ECS 部署的节点/mongo 应用程序。正在运行的任务包含两个容器,一个用于我的节点 api,另一个用于我的 mongo 数据库。当我推送对我的 api 所做的更改并创建一个新的任务修订 + 使用它更新我的服务时,它会部署更改,但每次都会清除我的数据库。

  1. 使用此设置,更新服务是否总是会部署新的 mongo 容器?
  2. 我有机会恢复到该服务的先前状态吗?
  3. 为每个容器创建一个单独的任务会更好吗

任何帮助将不胜感激

标签: node.jsmongodbamazon-web-services

解决方案


  1. 是的,它将始终从任务定义中提到的映像部署一个新容器。

    当 UpdateService 在部署期间停止任务时,会向任务中运行的容器发出 docker stop 的等效命令。这会导致 SIGTERM 和 30 秒超时。

更新服务

  1. 不,当服务更新时,它会自动删除旧的容器和图像。因为默认情况下,Amazon ECS 容器代理会自动清理已停止的任务和容器实例上的任何任务未使用的 Docker 映像。

您可以使用控制此行为ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION

此变量指定在删除属于已停止任务的任何容器之前等待的时间。只要有一个容器引用它,镜像清理过程就不能删除一个镜像。在任何容器(停止或运行)未引用映像后,该映像将成为清理的候选对象。默认情况下,此参数设置为 3 小时,但如果您的应用程序需要,您可以将此时间缩短至 1 分钟。

  1. 是的,最好有一个单独的任务定义。另外,我建议安装在数据库容器中以避免将来发生此类损失。

AWS ecs 码头工人卷


推荐阅读