docker - DependsOn vs 链接 - docker-compose vs ECS 任务
问题描述
ECS容器定义的属性用于容器依赖
docker compose 的Links属性提供服务依赖。
我们正在将 docker compose 文件映射到 ECS 任务定义。
从概念上讲,docker compose 中属性的用途是否links
类似于DependsOn
ECS 容器定义的属性?
解决方案
links:
是第一代 Docker 网络设置的重要组成部分。一旦 Docker 引入了docker network
一系列命令并且 Docker Compose 默认设置了一个私有网络,它就变得不那么重要了,而且在现代 Docker 中根本没有任何理由使用它。
Compose 有自己的depends_on:
选择。如果 service a
depends_on: [b]
,那么当a
启动时(可能是因为你明确地docker-compose up a
,或者可能只是作为一个排序约束)b
容器保证存在。如果b
是需要一段时间才能启动的数据库或其他服务,则不能保证其正常运行,但例如从的角度来看b
将是有效的主机名。a
在单个 ECS 任务中,一个容器可以容纳dependsOn
其他容器。这类似于 Composedepends_on:
设置,但它有一个额外的condition
参数,可以支持几个不同的生命周期。值得注意的是,一个容器可以等待另一个容器成为"condition": "HEALTHY"
,Docker Compose 中的一项检查需要等待容器自行手动检查(通常使用类似的帮助脚本wait-for-it.sh
);"condition": "COMPLETE"
如果一个容器只是为另一个容器设置,它也可以等待另一个容器。
如果您要将 Docker Compose 文件移植到 ECS 任务中,我会先尝试替换links:
为depends_on:
,这不会导致太多功能更改;将其翻译为 ECS,其语义与"dependsOn": [{"condition": "START"}]
.
推荐阅读
- azure-data-factory - 我们如何将一个表映射到 Azure 数据工厂中 sink DB 中具有不同列的多个表?
- openlayers-3 - 开放层图中的 POI 和方向路径
- visual-studio - 在没有 VSTS 任务的情况下部署 BizTalk 应用程序项目 (.btaproj)
- ios - 无法在 ios 中接收来自 react-native-firebase 的通知消息
- firebase - 意外令牌 mailTransport firebase 云功能
- mysql - 如果它们连接到一个对象,如何从一个表中删除 id 并从另一表中删除 id?
- python-3.6 - 如何在 python logging.basicConfig 中使用 TimedRotatingFileHandler 作为文件名?
- android - 无法在 android 设备中打开相机 - react-native
- python - 如何在 MIDI 文件中添加拍号?
- javascript - 对象对象是什么意思