【问题标题】:Integrating Docker with Xdebug and Sublime Text on PHP environment在 PHP 环境中将 Docker 与 Xdebug 和 Sublime Text 集成
【发布时间】:2016-07-11 16:06:29
【问题描述】:

我正在为我的团队设置 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 代码的正确方法?

【问题讨论】:

  • 我发现设置这个开发环境的最好方法是使用 Docker 共享卷。在容器和主机之间设置共享卷时,任何文本编辑器都可以使用。

标签: php docker sublimetext xdebug sublime-text-plugin


【解决方案1】:

这个解决方案也可能适用于 Sublime Text - 对于 Visual Studio Code,我最近才开始工作。我发现这些 remote_host 和其他 Xdebug 设置适用于我在 Windows 10 Pro 和 OS X 上使用最新版本的 Docker 社区版。

在 Xdebug 扩展配置中,我将这些与 Xdebug 扩展安装一起设置在来自 docker hub 的包含 php.ini 的映像包的 Dockerfile 中。此答案底部有一个帖子链接,说明如何在 Dockerfile 中完成此操作,以及如何构建映像然后将其添加到 docker-compose 文件中。

  1. xdebug.remote_connect_back 设置需要关闭:xdebug.remote_connect_back=0
  2. 自动启动 xdebug.remote_autostart=1 它可以正常工作。
  3. xdebug.remote_host=127.0.0.1 需要根据 Windows 或 OS X 进行如下更改:

运行 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

然后根据上面的示例为您的主机使用xdebug.remote_host 设置的IP,如下所示:

  1. 视窗10.0.75.1
  2. OS X: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 Dev Environment - Remote Debugging with Xdebug and VS Code

【讨论】:

  • 我发现这非常困难 - 因为您必须将本地 IP 获取到您正在调试的工作容器中。我发现我必须根据我正在处理的 BOX 手动编辑我的设置,这非常令人反感。您目前是否改进了您的解决方案?
  • @ktamlyn,将 remote_host IP 作为环境变量传递时更容易管理,docker-compose 还可以使事情更容易管理,您可以在其中评论/取消评论设置取决于环境。
猜你喜欢
  • 1970-01-01
  • 2013-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 2011-10-26
相关资源
最近更新 更多