配置php-fpm访问docker中的环境变量

Aid*_*wen 5 environment-variables php-fpm docker docker-compose

我在 docker 容器中运行 php7-fpm。但是,我的 php 脚本无法访问我的 docker-compose 文件中设置的环境变量。getenv('MY_ENV_VAR')返回FALSE

我已更改/etc/php/7.0/fpm/pool.d/www.conf为包含clear_env = no并重新启动,service php7.0-fpm restart但我的环境变量 start 不存在。

我也试过编辑 /etc/php/7.0/fpm/php.ini 包含行variables_order = "EGPCS".

当我在 bash shell 上执行到我的容器时,我可以看到我的变量存在。只是它们在我的 php 脚本中无法访问。

我错过了什么?

小智 11

这是一个 PHP-FPM 恶作剧。

  • 设置clear_env = noon /etc/php/7.2/fpm/pool.d/www.conf,所以;

在 Dockerfile 上使用 启动 php-fpm init.d,而不是使用 service
前任:

CMD /etc/init.d/php7.2-fpm start && nginx -g 'daemon off;'
Run Code Online (Sandbox Code Playgroud)

立即检查环境变量


Aid*_*wen 2

好吧,这似乎都是错误的,但我通过在 bash 脚本中添加环境变量来让它工作 -

#!/bin/bash    
echo "" >> /etc/php/7.0/fpm/pool.d/www.conf # new line.
if ! [ -z "$MY_ENV_VAR" ]
then
    echo "env[MY_ENV_VAR] = $MY_ENV_VAR;" >>  /etc/php/7.0/fpm/pool.d/www.conf
fi
Run Code Online (Sandbox Code Playgroud)

然后在我的 Dockerfile 中 -

COPY add_env_vars.sh /add_env_vars.sh
CMD source /add_env_vars.sh && service php7.0-fpm start
Run Code Online (Sandbox Code Playgroud)

看起来 php-fpm 与系统环境变量的配合不太好。

欲了解更多信息,请参阅 -