php - 如何从 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 和容器中将 Xdebug 的端口更改为 9001 ( xdebug.remote_port=9001
.)
解决方案
推荐阅读
- powershell - 将图像文件夹与 Powershell 中的 CSV 文件进行比较
- java - 为什么 Android codelab 03.2 在将双精度数除以零时会出现 IllegalArgumentException?
- python - 使用 json 将文件读入 pandas 数据框
- python - 依赖项问题——ImportError: cannot import name getfullargspec
- ios - 何时使用 Data(contentsOf:) vs Session.dataTask(with:completionHandler:)?
- django - 设置 Django DatetimeInput 小部件的格式
- postgresql - Pgpool-II:当断开主节点或备用节点失败时,委托 IP 不可用
- coq - 什么是 [...] 一般证明,为什么我不能删除它
- material-ui - 如何从 material-ui-picker 显示 DateRangePicker 的操作按钮
- oracle - Oracle 查询失败并添加了 COLLATE 子句