Не работает Xdebug на прокси — сервере в docker

#docker #xdebug #nginx-reverse-proxy

Вопрос:

У меня есть такая система, развернутая в моей локальной среде. Существует контейнер docker, в котором установлен nginx (используется в качестве прокси-сервера), который перенаправляет запросы на другие контейнеры docker, на которых установлен Apache. Я хочу установить отладчик Xdebug на контейнеры Apache и использовать его соответствующим образом. Когда меня спрашивают, я вижу ошибку в журналах:

Xdebug: [Step Debug] Could not connect to debugging client. Tried: host.docker.internal: 9005 (through xdebug.client_host / xdebug.client_port) :-(

В файле Dockerfile контейнера Apache я написал:

 RUN pecl install xdebug   amp;amp; docker-php-ext-enable xdebug   amp;amp; echo "xdebug.mode = debug" gt;gt; /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini   amp;amp; echo "xdebug.client_host = host.docker.internal" gt;gt; /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini   

Я написал в docker-compose.yml:

 backend:  build: backend  container_name: backend  volumes:  # Re-use local composer cache via host-volume  - ~ / .composer-docker / cache: /root/.composer/cache: delegated  # Mount source-code for development  - ./:/app  expose:  - 80  - 9005  depends_on:  - console  environment:  - VIRTUAL_HOST = backend.cliq.com   nginx-proxy:  build: docker / nginx-proxy  container_name: nginx-proxy  expose:  - 9005  ports:  - "80:80"  volumes:  - /var/run/docker.sock:/tmp/docker.sock:ro  

Я предполагаю, что мое соединение xdebug не достигает локальной машины через прокси-сервер, но я не знаю, как это исправить. У кого есть мысли?

Комментарии:

1. Почему expose: - 9005 ? Зачем? помните: именно Xdebug устанавливает соединения, именно Xdebug подключается к клиенту отладки (VSCode/PhpStorm/NetBeans/и т.д.), А НЕ наоборот. Если вы предоставите этот порт, ваша среда разработки не сможет его прослушивать…

Ответ №1:

Вопрос был решен. Я добавляю в docker-compose.yml

дополнительные хосты: — «хост.докер.внутренний:хост-шлюз»