Мне нужно отлаживать сценарии 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 не может обнаружить сеанс отладки.
По сути, я сделал следующее:
- Запустить сеанс отладки на моем локальном компьютере (Windows)
- Создать ssh-туннель на удаленный сервер (перенаправив порт 9000 на сервер на локальный хост: 9000), используя
ssh -R 9000:localhost:9000 username@myremoteserver.com
- Отображенный порт 9000 на Docker на порт 9000 на удаленном сервере
- 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 на моем локальном ПК?