У меня есть несколько php-серверов, назовем их api1, api2. Я настроил файл docker-compose, который успешно запускает их в связке с nginx, чтобы они были доступны с хоста и работали нормально.
Вот пример моего docker-compose.yml:
version: "3.5"
services:
nginx:
user: "root:root"
image: nginx:stable
container_name: nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./cert:/etc/nginx/ssl/
- ./vhosts/:/etc/nginx/conf.d/:cached
- ./logs/nginx:/var/log/nginx:cached
- ${ACCOUNT_PATH}:/var/www/api1:cached
- ${ACCOUNT_API_PATH}:/var/www/api2:cached
api1:
image: php-fpm-image
build:
context: "."
dockerfile: "./images/api1/Dockerfile"
user: "root:root"
container_name: account
working_dir: /var/www/api1/
volumes:
- api1path/:/var/www/api1
api2:
image: php-fpm-image
build:
context: "."
dockerfile: "./images/api2/Dockerfile"
user: "root:root"
container_name: api2
working_dir: /var/www/api2/
volumes:
- api2:/var/www/api2:cached
networks:
default:
name: domain.com
driver: bridge
В связи с этим docker-compose файл для функциональных тестов:
version: '3.5'
services:
apitests:
image: apitests:latest
container_name: api_tests
volumes:
- ./config/:/opt/project/config/
- ./test_reports/screenshots:/root/.selene/screenshots/
networks:
default:
driver: bridge
external:
name: domain.com
Существуют следующие домены, которые доступны с хост-машины:
api1.domain.com 127.0.0.1
api2.domain.com 127.0.0.1
Моя проблема в том, как подключить их непосредственно в докере, потому что мне нужно делать запросы от api1 к api2, apitests к api1, api2.
Когда я запрашиваю, их домен разрешается напрямую в их контейнеры, поэтому я получаю следующую ошибку
невозможно подключиться к удаленному хосту (172.21.0.8): соединение отклонено
из любого контейнера.
Как вы понимаете, мне нужно, чтобы их домены преобразовывались в контейнер NGINX, чтобы он мог работать правильно и php-fpm мог возвращать мне результат через nginx.
Как мне этого добиться?