Как отладить тест и / или запустить код в Docker контейнере из PhpStorm - PullRequest
1 голос
/ 04 марта 2020

У меня есть docker -композитный файл, который запускает несколько сервисов, в том числе бэкэнд-приложение, работающее на PHP / Laravel и прослушивающее порт 80/443 для веб-запросов (только для запросов GraphQL). У меня также есть PHPUnit для тестирования этого кода.

Я уже несколько часов пытаюсь установить точки останова в моем коде с помощью PhpStorm и правильно отладить мой код, работающий в контейнере Docker, но но безрезультатно. Я уверен, что я не сильно скучаю, потому что есть некоторая отладка, которую мне удалось сделать, но этого недостаточно.

Мне удалось настроить в PhpStorm удаленную конфигурацию отладки PHPUnit, которая запускает специфику c Тестовый метод, и он работает нормально, останавливаясь на точках останова в этом файле. Но если я установлю точки останова в других файлах, они не сработают.

Я хотел бы иметь возможность отлаживать как из тестов PHPUnit, так и из приложения, работающего нормально, но мне, по крайней мере, нужно уметь это делать из тестов.

Вот что я добавил в Dockerfile контейнера приложения (только для соответствующей части):

RUN ...
&& pecl install xdebug \
&& docker-php-ext-enable xdebug \
&& echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo "xdebug.remote_port=9001" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo "xdebug.remote_handler=dbgp" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo "xdebug.remote_connect_back=0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo "xdebug.idekey=idekey" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo -e "xdebug.remote_host=$(host `hostname` | grep -om 1 10\..*$)" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \

Вот интерпретатор CLI, настроенный в PhpStorm: enter image description here

Я также изменил порт Xdebug на 9001 как в PhpStorm, так и в контейнере (xdebug.remote_port=9001.)

...