Docker – 端口阻止收听

我正在尝试在基于docker的设置上设置xdebug集成。

  • 我正在使用Docker for Mac 1.12.0-rc2-beta17与“本机”泊坞窗机器
  • 我有一个安装了xdebug的容器,公开了9000端口并将其映射到9000端口:

    $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6950c2a2b05d app "/usr/bin/supervisord" 9 minutes ago Up 9 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:9000->9000/tcp, 0.0.0.0:2222->22/tcp app_1 
  • 当我尝试使用PhpStorm侦听端口9000进行debugging连接时,出现错误“无法侦听:端口9000正忙”。

我必须确定我是networking新手。

这取决于你想通过Xdebug连接

xdebug.remote_connect_back=1表示PHP将等待一个带有GET参数XDEBUG_SESSION_START=<IDE_key>的HTTP请求。 然后,服务器中的PHP将尝试通过您的PHPStorm列出的端口9000连接。 经典不要打电话给我们,我们会打电话给你的情况。

现在你的情况与docker说简单,你的容器负责端口9000.所以PHP将得到一个回环,PHPStorm不能使用端口9000,因为它已经被你的docker集装箱使用。

所以跳过端口9000的分配到docker,这将解决这种情况。

首先检查您的容器日志进行debugging:

 docker logs 6950c2a2b05d 

要么

 docker logs app_1 

为类tail行为添加-f标志:

 docker logs -f app_1 

我发现了两件事: