Xdebug не может подключиться к хосту Docker

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

Вот мой конфиг 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

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

На локальной машине я могу telnet к порту 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, ни с контейнера. Когда я пытаюсь это просто сидеть там, ничего не делая. Однако и виртуальная машина, и контейнер могут нормально пропинговать хост-компьютер.

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

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

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

2

Решение

Рекомендуемый 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

Начиная с Docker-17.06, вы можете получить доступ к службам, размещенным на Mac внутри Container, через статическое имя хоста: 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

1

Другие решения

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

0

По вопросам рекламы [email protected]