在PHP环境中集成Docker与Xdebug和Sublime Text

时间:2016-07-11 16:06:29

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

我正在为我的团队设置Docker开发环境。在这种环境中,我们希望将Xdebug与Docker集成以允许调试。看来最简单的方法是将Sublime Text连接到Docker实例,然后在Sublime Text上安装Xdebug ontop。我找到了以下指南,用于将Sublime Text与Docker(http://domeide.github.io/)集成,以及本指南,用于将Xdebug与Sublime Text(https://www.sitepoint.com/debugging-xdebug-sublime-text-3/)集成。我想知道的是,是否有人有建立类似环境的经验?有更简单的方法吗?这看起来像是在Docker中调试PHP代码的正确方法吗?

1 个答案:

答案 0 :(得分:1)

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

在Xdebug扩展配置中,我将这些与Xdebug扩展安装一起设置在包含php的docker hub的映像包的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进行更改,如下所示:
  4. Windows 10 Professional运行Docker版本17.03.0-ce-win1,打开命令提示符并输入ipconfig。该地址列在DockerNAT下。例如:

    ipconfig
    
    Ethernet adapter vEthernet (DockerNAT):
    
        IPv4 Address. . . . . . . . . . . : 10.0.75.1
    

    OS X El Capitan运行Docker版本17.03.0-ce-mac2,为您现有的子网掩码创建IP 10.254.254.254的别名。

    sudo ifconfig en0 alias 10.254.254.254 255.255.255.0
    

    然后根据以上示例,按照以下步骤使用IP作为主机的xdebug.remote_host设置:

    1. Windows 10.0.75.1
    2. OS X:10.254.254.254
    3. 注意,如果在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