我正在尝试在基于docker的设置上设置xdebug集成。
我有一个容器,安装了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正忙”。
我必须确切地说我是网络中的新手..
答案 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端口。
如果您正在使用docker compose示例,则docker-compose.yml文件位于:
I.resize(10,10);