首页 > 解决方案 > DependsOn vs 链接 - docker-compose vs ECS 任务

问题描述

取决于

ECS容器定义的属性用于容器依赖

docker compose 的Links属性提供服务依赖。


我们正在将 docker compose 文件映射到 ECS 任务定义。

从概念上讲,docker compose 中属性的用途是否links类似于DependsOnECS 容器定义的属性?

标签: dockerdocker-composeamazon-ecsdocker-container

解决方案


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"}].


推荐阅读