#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
дополнительные хосты: — «хост.докер.внутренний:хост-шлюз»