У меня есть 3 контейнера. Контейнер, являющийся обратным прокси-сервером nginx:
nginx-proxy:
image: jwilder/nginx-proxy:latest
ports:
- 80:80
- 443:443
networks:
- network
За этими двумя контейнерами php fpm в этой сети. Контейнер A и контейнер B с именами хостов A и B соответственно. Я также добавил их в мой локальный файл хоста:
127.0.0.1 A
127.0.0.1 B
, чтобы я мог связаться с ними с моего локального хоста. Оба отвечают на запросы fastCGI.
Теперь мне нужно выполнить запрос Guzzle в A, чтобы перейти к B. Это должно пройти через прокси-сервер nginx. Как добавить запись в хост-файл контейнера A, чтобы запрос к B перешел на nginx-proxy
с заголовком Host: B
. Но добавление
extra_hosts:
- "B:nginx-proxy"
не сработает, и я не могу найти другого способа, кроме жесткого кодирования, который я не хочу делать по понятным причинам.
Docker compose file:
containerA:
build:
context: 'docker'
volumes:
- .:/var/www/html
- ./docker/www.conf:/usr/local/etc/php-fpm.d/zz-docker.conf
networks:
- network
environment:
VIRTUAL_HOST: containerA
VIRTUAL_ROOT: /var/www/html/public/index.php
VIRTUAL_PROTO: fastcgi
containerB:
build:
context: 'docker'
volumes:
- .:/var/www/html
- ./docker/www.conf:/usr/local/etc/php-fpm.d/zz-docker.conf
networks:
- network
environment:
VIRTUAL_HOST: containerB
VIRTUAL_ROOT: /var/www/html/public/index.php
VIRTUAL_PROTO: fastcgi
nginx-proxy:
image: jwilder/nginx-proxy:latest
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
networks:
- network
environment:
DEFAULT_HOST: containerA
networks:
network:
driver: bridge