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.ymlecs_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?

带有 docker hub 映像的 ECS FARGATE TASK 定义

如何链接在 AWS ECS 任务中运行的 2 个容器

在 ECS Fargate 上获取 CannotPullContainerError