Удаленная отладка Xdebug внутри Docker на удаленном сервере - PullRequest
0 голосов
/ 09 мая 2018

Мне нужно отлаживать сценарии PHP, расположенные внутри контейнера Docker на удаленном сервере.

Обычно я отлаживаю свой код с помощью кода Visual Studio в Windows. Я без проблем отлаживал свои dev-коды (которые находятся в Vagrant).

Но когда дело доходит до отладки файлов в Docker на удаленном сервере, я не могу заставить его работать.

Вот мой параметр xdebug на php.ini (в докере, расположенном на удаленном сервере)

xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_host=172.18.0.1
xdebug.remote_port=9000
xdebug.remote_log=/tmp/debug.log

IP-адрес remote_host в приведенной выше настройке - это IP-адрес удаленного хоста, видимый из Docker.

Я пробовал ssh-туннелирование на мой удаленный сервер (из Windows, используя telnet).

Но когда я пытаюсь запустить сайт в браузере, мой код Visual Studio не может обнаружить сеанс отладки.

По сути, я сделал следующее:

  1. Запустить сеанс отладки на моем локальном компьютере (Windows)
  2. Создать ssh-туннель на удаленный сервер (перенаправив порт 9000 на сервер на локальный хост: 9000), используя ssh -R 9000:localhost:9000 username@myremoteserver.com
  3. Отображенный порт 9000 на Docker на порт 9000 на удаленном сервере
  4. Xdebug в Docker настроен на прослушивание своего хоста (то есть IP-адрес хоста, видимый изнутри Docker, который я получил от запуска этой команды изнутри Docker: /sbin/ip route|awk '/default/ { print $3 }'

Когда я запускаю сайт, /tmp/debug.log содержит следующее:

I: Connecting to configured address/port: 172.18.0.1:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///magento/test.php" language="PHP" xdebug:language_version="5.6.33-1+ubuntu16.04.1+deb.sury.org+1" protocol_version="1.0" appid="12776" idekey="www-data"><engine version="2.5.5"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2017 by Derick Rethans]]></copyright></init>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

Как я могу «передать» соединение, установленное Xdebug, с Docker, на мой удаленный сервер, на IDE на моем локальном ПК?

...