PankovAlxndr
@PankovAlxndr
Fullstack web developer

Как настроить xdebug для докера на vps?

Здравствуйте, есть проект, его файлы лежат у меня и так же на VPS с убунту
эти файла маунтятся в докер контейнер (вообще приложение на php)
работаю в phpstorm

не могу понять как настроить xdebug в моем случае
те на ноутбуке у себя правлю файлы, эти файлы тут же копируются на vps в папку,
которая проброшена в докер контейнер

(ноут тонкий клиент, вся работа php + mysql + node + ...) происходит на vps

как я понял нужно верно настроить xdebug.client_host
но не могу в голове все соединить в логичную цепочку

у меня один ip адрес
у vps другой
внутри докера третий

как все верно соединить?

конфиг в php.ini
xdebug.mode = debug
; это мой ip и idekey котоырй в настройках пхпшторма и расширения браузера
xdebug.client_host = 46.229.184.75
xdebug.idekey = PHPSTORM
xdebug.client_port = 9003
xdebug.remote_connect_back = true
xdebug.start_with_request = yes


phpinfo показывает что xdebug есть
xdebug_info тоже печатает информацию
есть ошибка там

[Step Debug] Time-out connecting to debugging client, waited: 200 ms. Tried: 46.229.184.75:9003 (through xdebug.client_host/xdebug.client_port) :-(

я 100% не понимаю устройство сети докера, что мне нужно прописать в конфиге, чтобы я достучался до xdebug, который на vps внутри докера?
  • Вопрос задан
  • 291 просмотр
Решения вопроса 1
Vamp
@Vamp
У вас сложности с тем, что xdebug является инициатором коннекта на ваш домашний ip. И если домашний провайдер выдаёт вам не белый IP, то напрямую такой коннект сделать не удастся.

Выходом может быть проброс порта через ssh.

ssh -R 9003:172.17.0.2:9003 user@vpsaddr
Данная команда установит ssh соединение с логином user на ваш vps по адресу vpsaddr и откроет на этом сервере порт 9003, который сквозь ssh соединение будет прозрачно проксироваться на 9003 порт уже на вашем локальном компьютере.

Вам нужно будет только узнать какой локальный IP адрес у вашего контейнера и подставить его вместо 172.17.0.2, который я указал для примера.

Узнать его можно командой
docker inspect ваш-контейнер | grep IPAddress
Этот ip адрес нужно прописать в xdebug.client_host и в опцию -R вместо 172.17.0.2.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы