Проблема
Как контейнеры ECS Fargate взаимодействуют друг с другом?
Ситуация
Я использую интеграцию docker compose с ecs.
В контексте докера AWS docker compose up
правильно выполнил развертывание.
Но обратный прокси работает некорректно, возможно из-за связи с контейнерами.
Мой docker-compose.yml
version: '3'
services:
nginx:
image: {ACCOUNT}.dkr.ecr.{REGION}.amazonaws.com/{MY_IMAGE}
ports:
- "80:80"
nodeapp:
image: {ACCOUNT}.dkr.ecr.{REGION}.amazonaws.com/{MY_REACT_IMAGE}
working_dir: /src
command: sh -c "yarn install && yarn build && yarn start"
ports:
- "3000:3000"
МОЙ nginx.conf
server {
listen 80;
server_name localhost;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:3000/;
# proxy_pass http://nodeapp:3000/; // works only for local
# proxy_pass http://nodeapp.{MY CLUSTER}.local:3000/; // doesn't work
}
}
Мое понимание
- В одной и той же службе ECS контейнеры могут взаимодействовать друг с другом через localhost.
- В другой службе ECS контейнеры могут взаимодействовать друг с другом с помощью обнаружения службы.
Это правильно? И как мне это сделать?
1: та же служба ECS
Сначала я пытался это сделать. Но docker compose up
(интеграция с ecs) создал разные службы (для службы nginx и службы приложения (реагирования). Как мне это настроить?
2: Другой сервис
В конфигурации nginx proxy_pass http:nodeapp.{MY_CLUSTER}.local:3000 работает неправильно.
Как контейнеры ECS взаимодействуют друг с другом?
Дайте мне знать самый простой способ.
Заранее спасибо.