Fargate 与 Docker 组合链接
Posted
技术标签:
【中文标题】Fargate 与 Docker 组合链接【英文标题】:Fargate with Docker compose Links 【发布时间】:2018-06-28 16:21:21 【问题描述】:我们有一个使用包含链接的 docker compose 的应用程序。
我正在尝试使用以下命令在 Amazon Fargate 上使用 aws-cli 部署它:
ecs-cli compose --project-name myApp --file docker-compose-aws.yml --ecs-params fargate-ecs-params.yml --cluster myCluster --region us-east-1 up --launch-type FARGATE
当我的 fargate-ecs-params.yml
有 ecs_network_mode: awsvpc
时,我收到错误:
Links are not supported when networkMode=awsvpc
所以我尝试更改为ecs_network_mode: awsvpc
,但是我得到了错误:
Fargate only supports network mode ‘awsvpc’
我的问题是如何使用包含链接的撰写文件为 Fargate 创建任务定义?或者这是不可能的(在这种情况下,我的替代方案是什么?)
【问题讨论】:
也发布你的 yml 文件 谢谢@TarunLalwani 我已经上传了docker-compose-aws.yml
here
请删除links: - mongo:mongo
,然后尝试。 docker compose v3 也不再支持volumes_from
。你应该看看不要使用它
谢谢@TarunLalwani,但是如果我不使用链接,那么容器将如何相互连接?此外,我们使用了不使用 volumes_from
的 v3 docker-compose 文件,但 AWS ECS 似乎不支持 v3,因此我们必须将其转换回 v2
尝试使用 v3 docker-compose 文件时出现以下错误:ERRO[0000] Could not parse config for project afp4mule : yaml: unmarshal errors: line 1: cannot unmarshal !!str `3` into config.RawService ERRO[0000] Unable to open ECS Compose Project error="yaml: unmarshal errors:\n line 1: cannot unmarshal !!str `3` into config.RawService" FATA[0000] Unable to create and read ECS Compose Project error="yaml: unmarshal errors:\n line 1: cannot unmarshal !!str `3` into config.RawService"
【参考方案1】:
在阅读了您对启动顺序的最终评论并回答了该问题后,我使用 docker-compose depends
解决了这个问题(即使在非 AWS 中)。
简单例如
services:
web:
depends_on:
- "web_db"
web_db:
image: mongo:3.6
container_name: my_mongodb
您应该能够删除已弃用的links
,而只需使用 docker 根据服务容器名称创建的主机名。例如上面的网站将连接到主机名:“my_mongodb”。
【讨论】:
【参考方案2】:您可以将两个容器放在相同的任务定义中,它们会自动相互链接。
【讨论】:
以上是关于Fargate 与 Docker 组合链接的主要内容,如果未能解决你的问题,请参考以下文章
无法让 docker healthcheck 与 ECS Fargate v 1.4.0 一起使用
AWS ECS 中的 Python 应用程序。如何链接到外部应用程序配置?
如何使用 CLI/SDK 获取 Fargate 任务的 docker 镜像 ID?