Контейнеры Docker из docker -compose больше не могут подключаться к хосту - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть три службы, созданные docker -композицией, работающей на Windows, и одна из них основана на PHP: 7.2- apache. Мне удалось отладить работающее приложение в PHPStorm с помощью XDebug, но, поскольку я продублировал этот docker -компонент, я больше не могу.

Вот значение XDEBUG_CONFIG var:

idekey=phpstorm remote_host=192.168.0.18 remote_log=/var/log/xdebug/xdebug.log remote_port=9000

remote_host - это локальный IP-адрес хоста, как вы можете видеть в результате ipconfig (извините, это по-французски):

Configuration IP de Windows

Carte Ethernet Ethernet :

   Suffixe DNS propre à la connexion. . . : 
   Adresse IPv6 de liaison locale. . . . .: fe80::e5d8:3f1c:32b0:d0ea%13
   Adresse IPv4. . . . . . . . . . . . . .: 192.168.0.18
   Masque de sous-réseau. . . . . . . . . : 255.255.255.0
   Passerelle par défaut. . . . . . . . . : 192.168.0.1

Carte Ethernet vEthernet (Commutateur par) 2 :

   Suffixe DNS propre à la connexion. . . :
   Adresse IPv6 de liaison locale. . . . .: fe80::b1c1:deaf:a8cd:a9b7%3
   Adresse IPv4. . . . . . . . . . . . . .: 172.31.145.129
   Masque de sous-réseau. . . . . . . . . : 255.255.255.240
   Passerelle par défaut. . . . . . . . . :

XDebug регистрирует эти сообщения :

[53] Log opened at 2020-04-30 11:45:11
[53] I: Connecting to configured address/port: 192.168.0.18:9000.
[53] E: Time-out connecting to client (Waited: 200 ms). :-(
[53] Log closed at 2020-04-30 11:45:11

Выполнение команды route в контейнере печатает это:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.240.0   U     0      0        0 eth0

Я не знаю, какой был шлюз по умолчанию, когда XDebug работал нормально, но это нормально что теперь это значение является шлюзом по умолчанию для хоста?

Нужно ли настраивать сеть в моем docker -компоненте?

Спасибо за помощь!

1 Ответ

0 голосов
/ 30 апреля 2020

После еще одного исследования я мог решить свою проблему.

Согласно Docker для Windows документации :

Хост имеет изменяющийся IP-адрес (или нет, если у вас нет доступа к сети). Начиная с 18.03, мы рекомендуем подключаться к специальному DNS-имени host.docker.internal, которое разрешает внутренний IP-адрес, используемый хостом. Это для целей разработки и не будет работать в производственной среде за пределами Docker Desktop для Windows.

Поэтому изменили переменную XDEBUG_CONFIG следующим образом:

idekey=phpstorm remote_host=host.docker.internal remote_log=/var/log/xdebug/xdebug.log remote_port=9000
...