Подключение к XDEBUG на удаленном образе Docker
Я пытаюсь выполнить отладку, используя NetBeans 11 в качестве моего клиента, Xdebug 3 в образе Docker. Контейнер Docker находится на удаленном хосте. Я не могу установить соединение. Индикатор в нижней части экрана NetBeans бесконечно прокручивается со словами «ожидание подключения (netbeans-xdebug)». Я не уверен, что делаю не так. У меня была эта работа в прошлом без Docker и с Xdebug 2, я не уверен, что я испортил Xdebug 3, Docker или оба.
Мои конфигурации:
Dockerfile правильно добавляет Xdebug, и я вижу его в своем контейнере.
docker-compose.yml
---
services:
drupal:
container_name: intranet-finkenb2
ports:
- "8082:80"
- "9092:9003"
volumes:
- /home/finkenb2/intranet/custom_themes:/opt/drupal/web/themes/custom
- /home/finkenb2/intranet/custom_modules:/opt/drupal/web/modules/custom
environment:
XDEBUG_MODE: debug,develop
XDEBUG_SESSION: netbeans-xdebug
XDEBUG_CONFIG: >
client_host = localhost
client_port = 9003
discover_client_host=true
start_with_request=yes
db:
container_name: intranet-finkenb2-db
solr:
container_name: intranet-finkenb2-solr
ports:
- "8982:8983"
volumes:
public_files:
private_files:
site_settings:
SSH-туннель через PuTTY:
R9092 localhost:9092
Конфигурация отладки PHP NetBeans:
- Debugger Port: 9092
- Session ID: netbeans-xdebug
- Maximum Data Length: 8192
- Check: Stop at first line
Конфигурация проекта NetBeans (конфигурация запуска):
- Run As: Remote Web Site
- Project URL: http://intranet-finkenb2.devel.lib.msu.edu
- index file: index.php
- remote connection
- hostname intranet8.devel.lib.msu.edu /*docker host server*/
- user/pwd correct
- initial directory /var/www/
1 ответ
Это не правильно:
ports
- "9092:9003"
Xdebug подключается к вашей среде IDE, поэтому вам не нужно открывать порт. Эти порты в любом случае предназначены для внешних воздействий, и вы уже подключаетесь к контейнеру по SSH с -R, так что это не имеет смысла.
Это не правильно:
XDEBUG_CONFIG: >
client_host = localhost
client_port = 9003
discover_client_host=true
start_with_request=yes
- Вы не можете использовать все это как часть
XDEBUG_CONFIG
переменная ,start_with_request
, Например. -
discover_client_host
с Docker не работает, так как получает неправильный IP через шлюз -
localhost
обычно также неверно, так как это должен быть IP / имя хоста машины, на которой ваша IDE слушает. Но вы используете SSH в этом контейнере, так что все должно быть в порядке. - С этим туннелем SSH вам нужно установить
client_port
к порту удаленной конечной точки SSH (9092).
Если что-то еще неясно, создайте файл журнала или попробуйте отладить страницу с помощью
xdebug_info()
в нем, и он расскажет вам, что пробовал Xdebug.