У меня есть docker -компонентный файл v3 (см. Ниже), который я использую для локального развертывания и тестирования прогресса разработки. Это работает как шарм - на моей машине. Как вы можете видеть, я использую сетевой тип bridge
по умолчанию для внутренних вызовов HTTP. Это позволяет мне беспрепятственно «подключать» службы, определенные в моем docker -компонентном файле, просто используя имя службы, определенное в docker -compose, в качестве имени домена, как в примере ниже.
Теперь я хочу использовать тот же docker -композитный файл для развертывания в AWS ECS (с использованием контейнеров Fargate). Я использую ecs-cli для достижения этого банкомата.
Проблема в том, что в ECS IP-адреса веб-службы не разрешаются с помощью docker -композитного имени службы. Итак, как мне сообщить своим службам об IP-адресах или доменных именах друг друга? Какие значения переменных среды должны быть определены в файле docker -compose? Каковы общие способы решения этой проблемы? Каков наилучший способ решить эту проблему?
Я использую AWS ECR в качестве docker репозитория изображений. Мой docker -компонентный файл выглядит так:
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