无法使用在 Docker 中运行的 PhpStorm 调试 PHP 应用程序?
Could not debug an PHP application using PhpStorm which runs in Docker?
我的 PHP 应用程序 运行 在 docker 中。我的 IDE 是 PhpStorm。我这样配置:
我的 Docker 配置包含:
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
和 docker-compose.yml 包含类似:
environment:
-XDEBUG_CONFIG: "remote_host=192.168.0.111 idekey=phpstorm"
-PHP_XDEBUG_ENABLED: 1 # Set 1 to enable.
而我 运行 我的 docker 作为;
docker-compose up.
当我访问一个页面时,它没有命中我的断点。
我错过了什么设置?
PhpStorm 中的调试设置:
这真的很难实现。简短的回答是 Docker 不用于调试。使用 Vagrant。
Docker 用于 运行 称为容器的微型应用程序。您想要 运行 像数据库这样的尽可能小的进程,然后 运行 您的 http 服务器在另一个容器中。正因为如此,标准容器都是简陋的。它们并不是为了解决复杂的问题。 Docker 用于生产。
另一方面,Vagrant 非常适合开发人员。它有很多细节可以支持开发人员并使生活更轻松。它适用于 Mac、Windows 和 Linux,并且 运行 在所有这些设备上都以相同的方式工作,因此您可以通过共享轻松地在团队设置中使用它Vagrantfile
,你得到 "cloning"。它甚至可以挂载本地文件夹,从而通过您的 http 服务器为您提供实时更新。您还可以一遍又一遍地破坏 Vagrant 图像,这非常好。一个好的提示是在 Vagrantfile
中记录所有设置步骤。当你有一个好的 Vagrant 设置时,销毁 Vagrant 图像,重新创建它,并且永远不要再触摸它里面的东西。当您将项目搁置 6 个月并且不记得 6 个月前做了什么时,这也很有帮助。
我的 PHP 应用程序 运行 在 docker 中。我的 IDE 是 PhpStorm。我这样配置:
我的 Docker 配置包含:
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
和 docker-compose.yml 包含类似:
environment:
-XDEBUG_CONFIG: "remote_host=192.168.0.111 idekey=phpstorm"
-PHP_XDEBUG_ENABLED: 1 # Set 1 to enable.
而我 运行 我的 docker 作为;
docker-compose up.
当我访问一个页面时,它没有命中我的断点。
我错过了什么设置?
PhpStorm 中的调试设置:
这真的很难实现。简短的回答是 Docker 不用于调试。使用 Vagrant。
Docker 用于 运行 称为容器的微型应用程序。您想要 运行 像数据库这样的尽可能小的进程,然后 运行 您的 http 服务器在另一个容器中。正因为如此,标准容器都是简陋的。它们并不是为了解决复杂的问题。 Docker 用于生产。
另一方面,Vagrant 非常适合开发人员。它有很多细节可以支持开发人员并使生活更轻松。它适用于 Mac、Windows 和 Linux,并且 运行 在所有这些设备上都以相同的方式工作,因此您可以通过共享轻松地在团队设置中使用它Vagrantfile
,你得到 "cloning"。它甚至可以挂载本地文件夹,从而通过您的 http 服务器为您提供实时更新。您还可以一遍又一遍地破坏 Vagrant 图像,这非常好。一个好的提示是在 Vagrantfile
中记录所有设置步骤。当你有一个好的 Vagrant 设置时,销毁 Vagrant 图像,重新创建它,并且永远不要再触摸它里面的东西。当您将项目搁置 6 个月并且不记得 6 个月前做了什么时,这也很有帮助。