Docker - 端口阻止侦听

时间:2016-06-30 05:55:30

标签: networking docker phpstorm xdebug

我正在尝试在基于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进行调试连接时,我收到错误“无法侦听:端口9000正忙”。

我必须确切地说我是网络中的新手..

4 个答案:

答案 0 :(得分:1)

它取决于你想通过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,这将解决这种情况。

答案 1 :(得分:0)

首先检查容器日志以进行调试:

docker logs 6950c2a2b05d

docker logs app_1

-f添加tail标志 - 就像行为一样:

docker logs -f app_1

答案 2 :(得分:0)

我发现了两件事:

答案 3 :(得分:0)

您必须使用version: '2' services: your_app: ports: - "80:80" expose: - "9000" image: "your-image:tag" 选项绑定9000端口。

This is the reference

如果您正在使用docker compose示例,则docker-compose.yml文件位于:

I.resize(10,10);