#docker #phpunit #phpstorm #xdebug
#docker #phpunit #phpstorm #xdebug
Вопрос:
Я настроил PhpStorm в соответствии с этим руководством: PHPUnit для PhpStorm
Я могу успешно запустить свой тест PHPUnit, так что это работает.
Проблема в том, что в моем контейнере docker я включил Xdebug, который мне иногда нужен. Обычно я docker exec
захожу в контейнер и запускаю тесты там. Xdebug сильно замедляет тесты, поэтому я делаю это phpdismod -s cli xdebug
перед запуском своих тестов. Тогда тесты выполняются в 100 раз быстрее!
Теперь я хочу добиться такого же поведения при запуске тестов через PhpStorm. PhpStorm открывает собственный контейнер docker, где он запускает тесты. Я не знаю, как я могу сообщить PhpStorm о запуске phpdismod -s cli xdebug
перед запуском PHPUnit. Есть ли способ сделать это?
Ответ №1:
Согласно ссылке, которую вы упомянули, есть способ задать имя изображения, например, как shlink_shlink_php:latest
.
Что вам нужно сделать, так это добавить entrypoint.sh
в свой собственный образ и на основе переменной envrionment вы можете включить или отключить режим отладки, например:
export DEBUG="${DEBUG:-on}"
if [ "$DEBUG" == "off" ]; then
phpdismod -s cli xdebug
fi
Таким образом, по умолчанию значение отладки равно on
, что означает оставить режим xdebug активным. однако, если вы передали значение среды, вызываемое DEBUG
со значением off
, это отключит xdebug.
Вы можете передавать переменные среды, как описано здесь.
В качестве альтернативы, вы можете проверить следующие параметры, которые упомянуты в here, например, попробуйте передать -dxdebug.remote_enable=0
через php дополнительные параметры из PhpStorm (я не уверен, что предотвращение подключения к удаленному интерпретатору будет таким же, как отключение отладчика, поскольку я не эксперт в этой части, но вы тоже можете это проверить)