Как связать службы для HTTP-связи, определенной в docker -компонентном файле v3, при развертывании в ECS Fargate? - PullRequest
0 голосов
/ 29 января 2020

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

1 Ответ

1 голос
/ 07 февраля 2020

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

...