Xdebug(在Docker容器中)忽略XDEBUG_CONFIG环境variables
我正在Docker上运行一个PHP应用程序,我想用XDebug进行debugging。 在我的docker-compose中,我在phpfpm部分添加了以下几行:
environment: XDEBUG_CONFIG: "remote_enable=1 remote_host=192.168.110.29 remote_port=9000 idekey=PHPSTORM remote_autostart=1" PHP_IDE_CONFIG: "serverName=reports.dev"
我正确地configuration了PHPStorm,在端口9000上监听并运行应用程序。
该应用程序完美的工作,但XDebug似乎并没有工作。
如果我移动php.ini文件中的configuration行,除了服务器名是空的,我不能debugging(这就是为什么我试图按照docker-composeconfiguration方式)的事实除外。
如果在Docker容器中运行echo $ XDEBUG_CONFIG,则输出是正确的,但是XDebug似乎没有读取Envvariables。
我有同样的问题。 我的图像基于nimmis/alpine-apache-php7/
。 我发现图像是使用supervisor
来启动进程。 supervisor
不了解Docker环境variables。
告诉supervisor
一个进程需要运行的惯例是在/etc/sv/{process}/run
创build一个run
脚本。 这样的脚本被用来启动Apache。 我需要更改脚本,以便在启动Apache之前导入Docker环境variables。
基础镜像的文档解释了导入Docker环境的惯例:
如果你需要docker命令行的环境variables(-e, – env = [])add
source /etc/envvars
在脚本文件中使用它们之前
所以我为Apache创build了自己的自定义run
脚本 – 在执行httpd
之前,我添加了source /etc/envvars
。
我通过添加一个简单的COPY
到我的Dockerfile来覆盖原来的run
脚本 :
COPY apache-run.sh /etc/sv/apache2/run
这成功地确保了我的$XDEBUG_CONFIG
在启动时对httpd
可见。 我能够确认,这影响了我的PHPconfiguration,通过打印phpinfo();
在一个网页。
你做了一个phpinfo();
? 这应该告诉你使用的设置。
我有同样的问题…永远把我弄明白。 你使用xdebug.remote_connect_back=1
吗? 如果这样删除该行。
我的nginx代理是通过(这是错误的)转发IP,所以在XDEBUG_CONFIG设置的IP被忽略。
对我来说,使用官方PHP-FPM-Alpine泊坞窗图像( FROM php:7-fpm-alpine
)是一个不同的问题。
我需要将XDEBUG-CONFIG添加到fpm池config: env[XDEBUG_CONFIG] = $XDEBUG_CONFIG
查看完整的configurationhttps://github.com/attrib/docker-symfony
- 如何使用shell脚本在dockerfile中设置环境variables的dynamic值
- 在主pipe中使用docker环境-evariables
- 我应该如何将敏感环境variables传递给Amazon ECS任务?
- Docker中的环境variables
- 如何使用Vagrant Docker提供程序的env属性?
- 如何将dockerfile环境variables传递给node.js文件?
- 使用sudo运行docker-compose时,在docker-compose.yml文件中进行variablesreplace
- ECS Docker Container获取运行cron的envvariables
- AngularJS的可重用Docker镜像