Траэфик для чайников вопрос. Я пытаюсь настроить облачные микросервисы Spring с помощью docker compose, используя traefik в качестве обратного прокси.
Моя цель - микросервисы должны общаться друг с другом через имя службы (например, service-registry-app), а traefik должен разрешить его по IP-адресу. Как только это заработает в локальном ящике, я хочу расширить его для работы на AWS ECS.
Я создал ana_network, используя
docker network create ana_network
конфигурация traefik:
Файл: docker-compose.yml
version: '2'
services:
proxy:
image: traefik
command: --api --docker --docker.domain=docker.localhost --logLevel=DEBUG
networks:
- ana_network
ports:
- "80:80"
- "8080:8080"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /dev/null:/traefik.toml
networks:
ana_network:
driver: bridge
конфигурация микросервисов:
Файл: docker-compose.yml
version: '2'
services:
service-registry:
image: sqshq/piggymetrics-registry
restart: always
networks:
- web
expose:
- "8761"
labels:
- "traefik.backend=service-registry-app"
- "traefik.frontend.rule=Host:service-registry-app.example.com"
environment:
CONFIG_SERVICE_PASSWORD: $CONFIG_SERVICE_PASSWORD
config-server:
image: sqshq/piggymetrics-config
restart: always
networks:
- web
expose:
- "8888"
depends_on:
- service-registry
environment:
EUREKA_HOST: service-registry-app.example.com
EUREKA_PORT: 8761
CONFIG_SERVICE_PASSWORD: $CONFIG_SERVICE_PASSWORD
labels:
- "traefik.backend=config-server-app"
- "traefik.frontend.rule=Host:config-server-app.example.com"
networks:
web:
external:
name: ana_network
Я могу получить доступ к приложению реестра служб с помощью curl
curl -H Host:service-registry-app.example.com http://172.21.0.2:8761
Но сервер конфигурации и шлюз api не могут получить доступ к реестру служб с указанной выше конфигурацией с помощью docker compose и traefik.
Какие изменения мне нужно сделать, чтобы все микросервисы могли обнаруживать друг друга, и как расширить их, чтобы они работали на ECS?
Edit1:
Исправлен отступ для переноса раздела сетей из сервисов в сети, это была опечатка.
Я новичок в контейнерах и распределенных системах, поэтому я могу задать несколько наивных очевидных вопросов, поэтому было бы здорово, если бы какой-либо traefik для чайников был очень полезным.
Ниже приведены 2 проблемы, с которыми я сталкиваюсь в настоящее время.
1) связь контейнера с контейнером - пример, как контейнер 2 (конфигурационный сервер в этом примере) должен взаимодействовать с контейнером 1 (сервис-реестр), по имени сервиса (например, сервис-реестр) или любым другим способом и как получить доступ к этим контейнерам из внешний мир (в данном случае реестр услуг)?
2) Расширение его, чтобы заставить его работать в ECS, следовательно, у каждого будет свое собственное определение задачи и он будет работать как служба внутри кластера ECS - в этом сценарии, как контейнеры должны взаимодействовать друг с другом с помощью traefik?