Как связать службы для HTTP-связи, определенные в файле docker-compose v3, при развертывании в ECS Fargate?

У меня есть файл 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

person korulis    schedule 29.01.2020    source источник


Ответы (1)


Согласно https://aws.amazon.com/blogs/compute/task-networking-in-aws-fargate/ Сетевым режимом по умолчанию для задач aws fargate является awsvpc, который имеет сетевой интерфейс обратной петли по умолчанию, что означает, что вы можете выполнять внутренние HTTP-вызовы по хорошо известному адресу http://127.0.0.1:

person Dom    schedule 07.02.2020
comment
Поэтому для конфигурации service3 я должен использовать COORDINATOR_URL = 127.0.0.1:4001/api/coordinator вместо COORDINATOR_URL = service1: 4001 / api /ordinator? - person korulis; 07.02.2020