Разрешение имени хоста для нескольких докеров PhpStorm

У меня есть полностью настроенная среда докера с Xdebug, правильно настроенная с помощью PhpStorm. В моей среде есть несколько контейнеров для разных функций. Кажется, все работает отлично. Взаимодействие CLI / Web останавливается на точках останова, как и должно быть, без проблем. Тем не мение …

У меня есть фрагмент кода следующим образом:

// test.php
$host = gethostbyname('db'); //'db' is the name of the other docker box, created with docker-compose
echo $host;

Если я запускаю это через bash в экземпляре docker ‘web’:

php test.php
172.21.0.2

Если я запускаю его через браузер:

172.21.0.2

Если я запускаю его через кнопку запуска / отладки PhpStorm (Shift + F9):

docker://docker_web:latest/php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=172.17.0.1 /opt/project/test.php
db

Это не решает! С чего бы это, и как я могу это исправить?

0

Решение

Как оказалось, моя среда докера построена с помощью docker-compose, и все соответствующие контейнеры находятся в одной и той же сети и имеют надлежащую иерархию зависящий от зависимостей.

Тем не мение. PHPStorm фактически был настроен на использование простого docker, а не docker-compose. Он нормально подключался к демону docker, но поскольку контейнер не учитывал компоновщик сборки, он не использовал сетевой макет, определенный в моем docker-compose.yml. Как только я сказал PHPStorm использовать docker-compose, все заработало нормально.

Кроме того, я заметил, что после запуска сеанса отладки в IDE после того, как уже загружен мой контейнер, он вызывает выход из контейнера после завершения сценария. Чтобы обойти это, мне пришлось создать зеркальный контейнер для отладки, который PHPStorm мог бы использовать по требованию. Мой конфиг выглядит следующим образом:

version: '3'

services:
web: &web
build: ./web
container_name: dev_web
ports:
- "80:80"volumes:
- ${PROJECTS_DIR}/project:/srv/project
- ./web/logs/httpd:/var/log/httpd
depends_on:
- "db"networks:
- backend

web-debug:
<< : *web
container_name: dev_web_debug
ports:
- "8181:80"command: php -v

db:
image: mysql
container_name: dev_db
ports:
- "3306:3306"volumes:
- ./db/conf.d:/etc/mysql/conf.d
- ./db/data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
networks:
- backend

networks:
backend:
driver: bridge

Это позволяет мне оперативно выполнять отладку в среде IDE, не убивая мой основной веб-контейнер.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector