node.js - AWS ECS 更新服务擦除 mongo 容器
问题描述
我有一个使用 ECS 部署的节点/mongo 应用程序。正在运行的任务包含两个容器,一个用于我的节点 api,另一个用于我的 mongo 数据库。当我推送对我的 api 所做的更改并创建一个新的任务修订 + 使用它更新我的服务时,它会部署更改,但每次都会清除我的数据库。
- 使用此设置,更新服务是否总是会部署新的 mongo 容器?
- 我有机会恢复到该服务的先前状态吗?
- 为每个容器创建一个单独的任务会更好吗
任何帮助将不胜感激
解决方案
- 是的,它将始终从任务定义中提到的映像部署一个新容器。
当 UpdateService 在部署期间停止任务时,会向任务中运行的容器发出 docker stop 的等效命令。这会导致 SIGTERM 和 30 秒超时。
- 不,当服务更新时,它会自动删除旧的容器和图像。因为默认情况下,Amazon ECS 容器代理会自动清理已停止的任务和容器实例上的任何任务未使用的 Docker 映像。
您可以使用控制此行为ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION
此变量指定在删除属于已停止任务的任何容器之前等待的时间。只要有一个容器引用它,镜像清理过程就不能删除一个镜像。在任何容器(停止或运行)未引用映像后,该映像将成为清理的候选对象。默认情况下,此参数设置为 3 小时,但如果您的应用程序需要,您可以将此时间缩短至 1 分钟。
- 是的,最好有一个单独的任务定义。另外,我建议安装在数据库容器中以避免将来发生此类损失。
推荐阅读
- r - R中包含矩阵时的函数积分
- google-workspace-add-ons - 只需发送附加组件
- node.js - Express:如何检查请求是否来自 React Native 应用程序?
- c# - .NET 5 - 上传带有其他参数 API 的文件
- r - 在 R 中重新排列数据框 - 将唯一的重复值合并到行中
- scala - Scala - Quicklens 枚举
- python - 在多节点集群中跨 H2O 节点分配资源
- android - Android中以下值的简单日期格式
- javascript - Webpack 显示重复的控制台日志
- javascript - 使用 pdfjs 动态突出显示 PDF 文本