首页 > 解决方案 > 如何从 PhpStorm 调试 Docker 容器中的测试和/或运行代码

问题描述

我有一个 docker-compose 文件,它启动了几个服务,包括一个在 PHP/Laravel 中运行的后端应用程序,并监听端口 80/443 的 Web 请求(仅对 GraphQL 请求)。我也有 PHPUnit 来测试该代码。

我已经尝试了几个小时,以便能够使用 PhpStorm 在我的代码中设置断点并正确调试在 Docker 容器中运行的代码,但无济于事。我确信我不会错过太多,因为我设法进行了一些调试,但这还不够。

我能够在 PhpStorm 中配置远程 PHPUnit 调试配置,该配置运行特定的测试方法,并且工作正常,在该文件中的断点处停止。但是如果我在其他文件中设置断点,它们不会被触发。

我希望能够从 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 \

这是在 PhpStorm 中配置的 CLI 解释器: 在此处输入图像描述

我还在 PhpStorm 和容器中将 Xdebug 的端口更改为 9001 ( xdebug.remote_port=9001.)

标签: phpdocker-composephpunitphpstormxdebug

解决方案


推荐阅读