Я пытаюсь создать файл docker-compose, который будет имитировать мою производственную среду с ее различными микросервисами.Я использую настраиваемую мостовую сеть с прокси-сервером nginx, который перенаправляет запросы портов 80 и 443 в правильные сервисные контейнеры.Файл docker-compose и файлы nginx conf вместе определяют сопоставления портов, которые позволяют прокси-контейнеру направлять трафик для каждой записи DNS в соответствующий контейнер.
Следовательно, я могу использовать имена своих контейнеров в качестве записей DNS дляполучить доступ к каждой службе контейнера из моего хост-браузера.Я также могу выполнить в каждом контейнере и пинг других контейнеров с тем же именем хоста DNS.Однако я не могу успешно свернуться из одного контейнера в другой только по имени контейнера.
Кажется, мне нужно добавлять сопоставление портов прокси-сервера к каждому вызову межсервисного API при работе в среде Docker.В моей производственной среде каждая служба имеет свою собственную среду и может отвечать на порты 80 и 443. Поэтому код, написанный для каждой службы, игнорирует спецификации портов и просто вызывает каждую службу по имени узла DNS.Я бы предпочел не добавлять сопоставления идентификаторов портов к каждому вызову API через различные базы кода, чтобы мои службы могли общаться друг с другом в среде Docker.
Существует ли инструмент или параметр конфигурации, который позволитмои микросервисные контейнеры для успешного вызова друг друга в Docker без необходимости использования карты прокси-порта?
version: '3'
services:
#---------------------
# nginx proxy service
#---------------------
nginx_proxy:
image: nginx:alpine
networks:
- test_network
ports:
- "80:80"
- "443:443"
volumes:
- "./site1/site1.test.conf:/etc/nginx/conf.d/site1.test.conf"
- "./site2/site2.test.conf:/etc/nginx/conf.d/site2.test.conf"
container_name: nginx_proxy
#------------
# site1.test
#------------
site1.test:
build: alpine:latest
networks:
- test_network
ports:
- "9001:9000"
environment:
- "VIRTUAL_HOST=site1.test"
volumes:
- "./site1:/site1"
container_name: site1.test
#------------
# site2.test
#------------
site2.test:
build: alpine:latest
networks:
- test_network
ports:
- "9002:9000"
environment:
- "VIRTUAL_HOST=site2.test"
volumes:
- "./site2:/site2"
container_name: site2.test
# networks
networks:
test_network: