如何在 Linux 中为 Docker 正确配置 xdebug.client_host?

fog*_*ogx 8 php linux xdebug docker wsl-2

我正在 Linux (WSL2) 上的 Docker 容器内运行 PHP 服务器。我想将 Xdebug 连接到此进程,但无法找到为此使用的 IP。

在 Windows 和 Mac 上,该xdebug.idekey=host.docker.internal变量会自动映射正确的 IP,但据我所知,这在 Linux 中不可用。

ip show route我尝试过手动输入主机和docker-container 之间的 IP hostname -I,但这些也不起作用(即使它们确实起作用,也只是临时修复)。我的容器也没有docker0网络,一些教程想用它来连接,但我不确定那是什么或如何获得网络。

所以问题是:如何获得正确的 IP 地址并自动在我的配置中设置它(docker-file、docker-compose 或 php.ini 文件)

Rey*_*dan 1

这是设置正确 IP 地址并将其自动设置到配置文件中的一种方法。

  • 确保 Windows 和 WSL 之间的防火墙已停用
# Windows powershell as administrator
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow
Run Code Online (Sandbox Code Playgroud)
  • 将此行添加到您的~/.bashrcWSL 中
# Windows powershell as administrator
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow
Run Code Online (Sandbox Code Playgroud)
  • 您可以通过以下方式验证您的 IP
export host_ip=$(ipconfig.exe | grep 'vEthernet (WSL)' -A4 | cut -d":" -f 2 | tail -n1 | sed -e 's/\s*//g')
Run Code Online (Sandbox Code Playgroud)

现在您可以在任何地方使用新变量。例如在.env文件中`:

echo $host_ip
Run Code Online (Sandbox Code Playgroud)