Xdebug 3.0 WSL2和VSCode - address已经被docker-proxy使用



我的VSCode在WSL中:Ubuntu无法监听xdebug端口,因为它被一些docker-proxy阻止了。

我遵循这个解决方案,但尝试VSCode听xdebug端口,导致以下错误:

错误:listen EADDRINUSE:地址已在使用:::9003

谁能帮助连接VSCode到xdebug?

Windows 11显示端口已经被wslhost分配:

PS C:WINDOWSsystem32> Get-Process -Id (Get-NetTCPConnection -LocalPort 9003).OwningProcess
Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
285      47     2288       4748       0,05  19480   1 wslhost

Ubuntu告诉,它是由一些docker-proxy分配的:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:9003            0.0.0.0:*               LISTEN      17210/docker-proxy
tcp6       0      0 :::9003                 :::*                    LISTEN      17217/docker-proxy

docker- composition -version:docker-compose version 1.25.0

xdebug.log显示:

[Step Debug] INFO: Connecting to configured address/port: host.docker.internal:9003.
[Step Debug] ERR: Time-out connecting to debugging client, waited: 200 ms. Tried: host.docker.internal:9003 (through xdebug.client_host/xdebug.client_port) :-(

只要没人在听就行。

关于xdebug.client_host,我试过了:

  • host.docker.internal
  • xdebug://网关xdebug://命名服务器参考:https://docs.google.com/document/d/1W-NzNtExf5C4eOu3rRQm1WlWnbW44u3ANDDA49d3FD4/edit?pli=1
  • 用docker-compose设置env变量。yml:XDEBUG_CONFIG="client_host=..."

从Dockerfile/docker-compose中删除暴露指令也不会消除错误。

解决了。对于有此挑战的其他人:

web -ubuntu ->docker- containerhost.docker.internal指向错误的ip。在wsdl -发行版中,文件/etc/resolv.conf是windows主机的ip。要获得正确的ip地址,请使用以下答案:如何在Linux和OS X上获得本地机器的主ip地址?

我的解决方案是用这个ip定义一个环境变量:

alias docker_compose_local_ip="ifconfig eth0 | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*.){3}[0-9]*).*/2/p'"
export DOCKER_COMPOSE_LOCAL_IP=$(docker_compose_local_ip)

并使用它配置容器:

services:
service-name:
environment:
- XDEBUG_CONFIG=client_host=${DOCKER_COMPOSE_LOCAL_IP} ...

相关内容

  • 没有找到相关文章

最新更新