无法使用在 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 个月前做了什么时,这也很有帮助。