Мне нужно отладить сценарии 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
remote_host
IP-адрес в настройках выше — это IP-адрес удаленного хоста, видимый изнутри Docker.
Я пробовал ssh-туннелирование на мой удаленный сервер (из Windows, используя telnet).
Но когда я пытаюсь запустить сайт в своем браузере, мой код Visual Studio не может обнаружить сеанс отладки.
В основном то, что я сделал, это:
ssh -R 9000:localhost:9000 [email protected]
/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 на моем локальном компьютере?
Задача ещё не решена.
Других решений пока нет …