2016-07-04 4 views
2

Я только что установил Docker на своей машине & имеет настройку Nginx/PHP7 (FPM)/MySQL, все работает нормально, но установив Xdebug на контейнере PHP, я не могу получить он должен подключиться к PHPStorm на моей главной машине.Xdebug не может подключиться к хосту Docker

Вот мой PHP Xdebug конфигурации ...

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts- 
20151012/xdebug.so 
xdebug.remote_log=/usr/local/var/log/xdebug.log 
xdebug.remote_enable=1 
xdebug.remote_host=192.168.99.1 
xdebug.remote_port=9000 
xdebug.remote_connect_back=1 
xdebug.remote_handler=dbgp 
xdebug.remote_mode=req 
xdebug.remote_autostart=true 

При просмотре с Xdebug включить набор печенья для контейнера, нет никаких запросов на соединение. Если я просматриваю локально размещенный сайт, есть, поэтому я правильно знаю, как правильно прослушивается PHPStorm.

На локальной машине, я могу телнет на порт 9000 ...

$ telnet 192.168.99.1 9000 
Trying 192.168.99.1... 
Connected to 192.168.99.1. 
Escape character is '^]'. 
^] 
telnet> quit 
Connection closed. 

... однако я не могу либо из boot2docker VM или контейнера. Когда я пытаюсь, он сидит там, ничего не делая. Тем не менее, как виртуальная машина, так и контейнер могут достаточно хорошо пинговать хост-машину.

Я попытался отключить брандмауэр своего Mac, но до сих пор нет радости.

Я не совсем уверен, как отключить брандмауэр на виртуальной машине boot2docker.

Любое понимание того, почему это не будет работать, будет очень приветствоваться. Заранее спасибо.

ответ

0

Вам необходимо использовать сеть, которая соединяется с хостом Docker на вашем Mac. Сделайте ifconfig на Mac и найдите локальный IP-адрес в других локальных сетях, например, 10.0.1.13. (. Специфика могут отличаться от версии Докер, но работал с Vagrant в Докер хостом и должны работать для большинства виртуальных машин)

+0

Спасибо за отзыв. Я добавил мостовой адаптер n/w на моем беспроводном адаптере, и я вижу новый адаптер в докере VM, с IP-адресом 192.168.1.18 (хост - 192.168.1.6), но я все еще не могу подключиться к telnet из VM или контейнер. Можете ли вы предложить более подробную информацию о том, как правильно настроить это? – TobyG

+0

Вам не нужен еще один мост. Вы попробовали другой порт, кстати? FPM может использовать 9000, так что это может быть противоречиво. Попробуйте использовать 10000 или аналогичный. Вы также можете сделать «nc -l 8888» на своем Mac и telnet из контейнера, чтобы убедиться, что он работает независимо от xdebug. – ldg

+0

Выключает восстановление VM. Я пробовал все остальное. В итоге я удалил виртуальную машину, удалил все сети только хоста и воссоздал виртуальную машину. Если все остальное не удается ... перезагрузитесь! – TobyG

1

Xdebug рекомендуется конфигурации внутри контейнера:

zend_extension = xdebug.so 
xdebug.remote_enable = 1 
xdebug.remote_connect_back = 0 
xdebug.remote_host = docker.for.mac.localhost 
xdebug.remote_port = 9000 
xdebug.remote_handler = dbgp 
xdebug.remote_mode = req 
xdebug.remote_autostart = 1 
xdebug.idekey = PHPSTORM 

С Докер-17.06, вы может получить доступ к службам, которые Mac внутри контейнера, через статическое имя хоста: docker.for.mac.localhost

Я хочу подключиться из баллончика к СЛУЖБЕ нА хОЗЯИНА?
У Mac есть изменяющийся IP-адрес (или нет, если у вас нет доступа к сети). Начиная с 17.06, наша рекомендация - подключиться к специальному DNS-имени только для Mac. Docker.for.mac.localhost, который разрешает внутренний IP-адрес, используемый хостом.

см https://docs.docker.com/docker-for-mac/networking/#i-cannot-ping-my-containers