Итак, работаю локально. Один проект поднимается через docker-compose, другой настроен по-старинке на хост-машине. Первый проект (который работает через докер) не имеет своей БД и забирает данные по API из второго (который работает на локалхосте), у которого своя БД есть.
В первом проекте уже давно есть конфиг docker-compose.yml, т.к. на проде работа идет через докер. До недавнего времени я поднимал первый проект также на локалхосте, но руководство поставило мне задачу разобраться с докером и расширить конфиг. Пока все шло через локалхост, никаких проблем не было, т.к. настроить виртуальные хосты на nginx'e дело не хитрое. Но как только начал работать с докером - возникла проблема, которую озвучил в вопросе. Не могу установить соединение по API, при том что в первом проекте все контейнеры поднялись нормально и работают.
Мой текущий конфиг docker-compose.yml первого проекта:
version: '3'
services:
fpm:
restart: always
command: php-fpm
image: pk1z/php74-fpm-memcached-phalcon4-redis-sockets-blackfire-xdebug-gd:1
volumes:
- ./:/var/www/html
- ./phpSettings.conf:/usr/local/etc/php-fpm.d/zzz-phpSettings.conf
env_file:
- .env
environment:
- PHP_IDE_CONFIG=serverName=${BASE_HOST}
- XDEBUG_CONFIG=remote_enable=true remote_host=dockerhost remote_port=9000 idekey=SK_IDE_KEY remote_autostart=true
networks:
- default
- dockernet
dockerhost:
image: qoomon/docker-host
cap_add: [ 'NET_ADMIN', 'NET_RAW' ]
restart: on-failure
nginx:
restart: always
image: nginx:latest
depends_on:
- fpm
links:
- fpm:fpm
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- .:/var/www/html
ports:
- 8098:80
db:
image: mysql:5.7
ports:
- ${MYSQL_PORT}:3306
env_file:
- .env
environment:
MYSQL_ROOT_PASSWORD: "${DB_PASSWORD}"
MYSQL_DATABASE: "${DB_NAME}"
MYSQL_USER: "${DB_USER}"
MYSQL_PASSWORD: "${DB_PASSWORD}"
volumes:
- mirrors_db_data:/var/lib/mysql
volumes:
mirrors_db_data:
external: true
networks:
dockernet:
external: true
Когда захожу на
localhost:8098, то вижу эту ошибку:
Как можно догадаться, второй проект висит на виртуальном хосте skapi.test, настроенном на локальной машине. Подключение к API идет через Symfony HTTP Client. Я пробовал делать точно такой же запрос через Постман - данные отдаются без проблем.
Как я понимаю, нужно расширить конфиг сервиса fpm, чтобы он коннектился к виртуальном хосту хост-машины. Подскажите пожалуйста, как это сделать.