按照本教程,我正在尝试使用PhpStorm调试Symfony应用程序: https://gist.github.com/chadrien/c90927ec2d160ffea9c4
我做的完全一样,但效果不好。
php-fpm:
build: ./php
container_name: php-fpm-symfony
links:
- db
ports:
- 9000:9000
- 8448:8448
- 8000:8000
working_dir: /var/www/html/
volumes:
- ../:/var/www/html
volumes_from:
- data
tty: true
env_file:
- ./docker.env
environment:
XDEBUG_CONFIG: remote_host=192.168.0.176
Dockerfile
# XDEBUG
RUN yes | pecl install xdebug \
&& echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/xdebug.ini
当我使用PhpStorm启动调试时,似乎连接正在发生。我的浏览器中会弹出一个新窗口。我的Symfony主页就在这里。 但它并没有停留在我的断点上。并且逐步调试不起作用。
我做错了吗?
答案 0 :(得分:3)
用docker-for-mac公开9000是错误的 - 你的方向错了。
IDE,PHPstorm,侦听端口9000,这意味着它在这个9000上打开一个套接字,它不会连接到这个端口。
另一方面,xdebug连接,附加到通常是localhost的端口9000 - 如果它找到了一个监听器,它们会说话。这个,因为在9000上没有服务,转发端口不仅没有意义,它实际上甚至会对你造成伤害,因为端口9000将被带到OSX主机localhost上,而你的PHPstorm将不再能够监听它。 / p>
你想做的是
多数民众赞成,
答案 1 :(得分:0)
另一个答案是正确的,您必须删除端口部分中的- 9000:9000
。
另一个问题是您的docker容器需要知道docker主机的IP地址。这是正确的端口9000连接到。
自docker 18.03发布以来,您可以在运行docker容器时使用host.docker.internal
DNS条目。
您可以在安装xdebug的RUN语句中添加另一个回显线:
&& echo "xdebug.remote_host=host.docker.internal" >> /usr/local/etc/php/conf.d/xdebug.ini \