部署到 ECS Fargate 时,如何 link 为 docker-compose v3 文件中定义的 HTTP 通信服务?
How to link services for HTTP communication defined in docker-compose v3 file when deploying to ECS Fargate?
我有一个 docker-compose v3 文件(见下文),用于在本地部署和测试我的开发进度。它就像一个魅力 - 在我的机器上。如您所见,我使用默认的 bridge
网络类型进行内部服务 HTTP 调用。这使我能够无缝地 "connect" 我的 docker-compose 文件中定义的服务,只需使用 docker-compose 文件中定义的服务名称作为其域名,如下例所示。
现在我想利用相同的 docker-compose 文件在 AWS ECS 中部署(使用 Fargate 容器)。我正在使用 ecs-cli 来实现这个 atm。
问题是在 ECS 中,网络服务 IP 无法通过 docker-compose 服务名称解析。那么如何让我的服务知道彼此的 IP 地址或域名呢? docker-compose 文件中应该定义哪些环境变量值?解决这个问题的常用方法有哪些?解决此问题的最佳方法是什么?
我使用 AWS ECR 作为 docker 图像存储库。我的 docker-compose 文件如下所示:
version: "3.7"
services:
service1:
image: myAwsAccount.dkr.ecr.eu-middle-42.amazonaws.com/service1:staging
container_name: service1-composed
ports:
- 4001:4001
environment:
- ExtractUrl=http://service3:2001/api
- ReportingUrl=http://service1:4001/api/reporting
- RestorationUrl=http://service2:3000/api
- CORE_URL=http://0.0.0.0:4001
service2:
image: myAwsAccount.dkr.ecr.eu-middle-42.amazonaws.com/service2:staging
container_name: service2-composed
environment:
- COORDINATOR_URL=http://service1:4001/api/coordinator
service3:
image: myAwsAccount.dkr.ecr.eu-middle-42.amazonaws.com/service3:staging
container_name: service3-composed
environment:
- COORDINATOR_URL=http://service1:4001/api/coordinator
- CORE_URL=http://service1:4001/api/core
根据https://aws.amazon.com/blogs/compute/task-networking-in-aws-fargate/ default network mode for aws fargate tasks is awsvpc, which has default network loopback interface, meaning you can make internal http calls to well known address http://127.0.0.1:
我有一个 docker-compose v3 文件(见下文),用于在本地部署和测试我的开发进度。它就像一个魅力 - 在我的机器上。如您所见,我使用默认的 bridge
网络类型进行内部服务 HTTP 调用。这使我能够无缝地 "connect" 我的 docker-compose 文件中定义的服务,只需使用 docker-compose 文件中定义的服务名称作为其域名,如下例所示。
现在我想利用相同的 docker-compose 文件在 AWS ECS 中部署(使用 Fargate 容器)。我正在使用 ecs-cli 来实现这个 atm。
问题是在 ECS 中,网络服务 IP 无法通过 docker-compose 服务名称解析。那么如何让我的服务知道彼此的 IP 地址或域名呢? docker-compose 文件中应该定义哪些环境变量值?解决这个问题的常用方法有哪些?解决此问题的最佳方法是什么?
我使用 AWS ECR 作为 docker 图像存储库。我的 docker-compose 文件如下所示:
version: "3.7"
services:
service1:
image: myAwsAccount.dkr.ecr.eu-middle-42.amazonaws.com/service1:staging
container_name: service1-composed
ports:
- 4001:4001
environment:
- ExtractUrl=http://service3:2001/api
- ReportingUrl=http://service1:4001/api/reporting
- RestorationUrl=http://service2:3000/api
- CORE_URL=http://0.0.0.0:4001
service2:
image: myAwsAccount.dkr.ecr.eu-middle-42.amazonaws.com/service2:staging
container_name: service2-composed
environment:
- COORDINATOR_URL=http://service1:4001/api/coordinator
service3:
image: myAwsAccount.dkr.ecr.eu-middle-42.amazonaws.com/service3:staging
container_name: service3-composed
environment:
- COORDINATOR_URL=http://service1:4001/api/coordinator
- CORE_URL=http://service1:4001/api/core
根据https://aws.amazon.com/blogs/compute/task-networking-in-aws-fargate/ default network mode for aws fargate tasks is awsvpc, which has default network loopback interface, meaning you can make internal http calls to well known address http://127.0.0.1: