Удаленная отладка с помощью XDebug из контейнера Docker не работает

Я пытаюсь настроить закрепленную среду AMP и не могу запустить удаленный отладчик. Моя установка выглядит следующим образом:

У меня есть контейнер базы данных с запущенным MySQL, который работает как шарм. Я создал образ Docker ‘phpmysqli’ со следующим Dockerfile

FROM php:apache

RUN docker-php-ext-install mysqli mbstring

# zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
RUN pecl install xdebug
RUN echo 'zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so' >> /usr/local/etc/php/php.ini
RUN touch /usr/local/etc/php/conf.d/xdebug.ini; \
echo xdebug.remote_enable=1 >> /usr/local/etc/php/conf.d/xdebug.ini; \
echo xdebug.remote_autostart=0 >> /usr/local/etc/php/conf.d/xdebug.ini; \
echo xdebug.remote_connect_back=1 >> /usr/local/etc/php/conf.d/xdebug.ini; \
echo xdebug.remote_port=9000 >> /usr/local/etc/php/conf.d/xdebug.ini; \
echo xdebug.remote_log=/tmp/php5-xdebug.log >> /usr/local/etc/php/conf.d/xdebug.ini;

RUN echo 'date.timezone = Europe/Berlin' > /usr/local/etc/php/conf.d/date.ini

Я звоню

docker run --rm -ti  --name web -p 127.0.0.1:8080:80 -v /path/to/projects:/var/www/html --link db:db  phpmysqli

После этого phpinfo соответственно php -i показывает, что xdebug 2.3.2 запущен и работает.

Затем я устанавливаю Сервер внутри IntelliJ IDEA под названием «Докер» с Host 127.0.0.1Порт 8080 и отладчик Xdebug. Я установил сопоставление пути аналогично сопоставлению тома в операторе запуска docker.

в PHP-> Настройки отладки Я проверил, что я использую порт 9000 для входящих подключений, что я буду принимать внешние подключения и что я не буду игнорировать подключения с незарегистрированных серверов.

После этого я также создал новую конфигурацию удаленной отладки PHP под названием Docker. Сервер Docker, идентификатор сессии XDEBUG_IDEA,

Я могу вызывать файлы PHP на контейнере, я могу подключиться к БД по ссылке … но по какой-то причине ничего не происходит, когда я пытаюсь начать сеанс отладки. Я пытался использовать куки (и да, я установил XDEBUG_IDEA в качестве идентификатора сеанса в помощнике xdebug). Я пытался отправить XDEBUG_SESSION_START=XDEBUG_IDEA как GET

Можете ли вы умные люди там сказать мне, что я пропустил?

16

Решение

Вы можете попробовать с этой конфигурацией. php-apache build предоставляет два метода для компиляции и включения модуля php.
Это лучше использовать docker-php-ext-enable xdebug установить правильную конфигурацию файла.

FROM php:5.4-apache

# Enable and configure xdebug
RUN pecl install xdebug
RUN docker-php-ext-enable xdebug
RUN sed -i '1 a xdebug.remote_autostart=true' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN sed -i '1 a xdebug.remote_mode=req' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN sed -i '1 a xdebug.remote_handler=dbgp' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN sed -i '1 a xdebug.remote_connect_back=1 ' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN sed -i '1 a xdebug.remote_port=9000' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN sed -i '1 a xdebug.remote_host=127.0.0.1' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN sed -i '1 a xdebug.remote_enable=1' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
13

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

близко: xdebug.remote_connect_back=0
добавлять: xdebug.remote_host=192.168.0.102[your docker host/machine IP]

0

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