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