Подключение к 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
  1. Вы не можете использовать все это как часть XDEBUG_CONFIGпеременная , start_with_request, Например.
  2. discover_client_host с Docker не работает, так как получает неправильный IP через шлюз
  3. localhostобычно также неверно, так как это должен быть IP / имя хоста машины, на которой ваша IDE слушает. Но вы используете SSH в этом контейнере, так что все должно быть в порядке.
  4. С этим туннелем SSH вам нужно установить client_port к порту удаленной конечной точки SSH (9092).

Если что-то еще неясно, создайте файл журнала или попробуйте отладить страницу с помощью xdebug_info() в нем, и он расскажет вам, что пробовал Xdebug.

Другие вопросы по тегам