我正在为我的团队设置 Docker 开发环境。在此环境中,我们希望将 Xdebug 与 Docker 集成以进行调试。似乎最简单的方法是将 Sublime Text 连接到 Docker 实例,然后在 Sublime Text 上安装 Xdebug。我找到了以下将 Sublime Text 与 Docker 集成的指南 (http://domeide.github.io/) 以及将 Xdebug 与 Sublime Text 集成的指南 (https://www.sitepoint.com/debugging-xdebug- sublime-text-3/)。我想知道是否有人有设置类似环境的经验?有没有更简单的方法来做到这一点?这看起来是在 Docker 中调试 PHP 代码的正确方法吗?
这个解决方案也可能适用于 Sublime Text - 对于 Visual Studio Code,我最近刚刚开始工作。我发现这些 Remote_host 和其他 Xdebug 设置在使用最新版本的 Docker Community Edition 的 Windows 10 Pro 和 OS X 上都适用。
在 Xdebug 扩展配置中,我将这些与 Xdebug 扩展安装一起设置在包含 php.ini 的 docker hub 镜像包的 Dockerfile 中。在这个答案的底部有一个帖子的链接,介绍了如何在 Dockerfile 中完成此操作以及如何构建映像然后将其添加到 docker-compose 文件中。
xdebug.remote_connect_back
设置:xdebug.remote_connect_back=0
xdebug.remote_autostart=1
它就可以工作了。运行 Docker 版本 17.03.0-ce-win1 的 Windows 10 Professional,打开命令提示符并输入 ipconfig。该地址列在 DockerNAT 下。例如:
ipconfig
Ethernet adapter vEthernet (DockerNAT):
IPv4 Address. . . . . . . . . . . : 10.0.75.1
运行 Docker 版本 17.03.0-ce-mac2 的 OS X El Capitan,为现有子网掩码创建 IP 10.254.254.254 的别名。
sudo ifconfig en0 alias 10.254.254.254 255.255.255.0
然后根据上面的示例,将 IP 用于主机的
xdebug.remote_host
设置,如下所示:
10.0.75.1
10.254.254.254
注意,如果您在 OS X 中遇到冲突,您可以像这样删除别名。
sudo ifconfig en0 -alias 10.254.254.254
我使用 Visual Studio Code 和 vscode-php-debug PHP 调试适配器来侦听 Xdebug 并单步执行我的代码。请注意,项目
launch.json
文件中需要包含以下内容,以便 VS Code 将远程服务器文件映射到本地计算机。这是来自我的项目及其典型卷位置,您的 serverSourceRoot 看起来是相同的。
"serverSourceRoot": "/var/www/html",
"localSourceRoot": "${workspaceRoot}"
docker-compose、nginx-proxy 的完整设置,包括如何使用 Xdebug 构建映像等,请参见 Docker WordPress 开发环境 - 使用 Xdebug 和 VS Code 进行远程调试
对我来说,如果我不写这个:
XDEBUG_START_WITH_REQUEST=yes
WSL 下的 Xdebug 不起作用。