web-dev-qa-db-ja.com

php-fpmを構成してdockerの環境変数にアクセスする

Php7-fpmをdockerコンテナーで実行しています。しかし、私のphpスクリプトは、docker-composeファイルで設定された環境変数にアクセスできません。 getenv('MY_ENV_VAR')FALSEを返します。

私は変わった /etc/php/7.0/fpm/pool.d/www.conf 含める clear_env = noservice php7.0-fpm restartしかし、私の環境変数の開始がそこにありません。

/etc/php/7.0/fpm/php.iniを編集して、variables_order = "EGPCS"

Bashシェルでコンテナーを実行すると、変数が存在することがわかります。私のphpスクリプトではアクセスできないというだけです。

何が欠けていますか?

5
Aidan Ewen

これはすべて間違っているようですが、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

それから私のDockerfileで-

COPY add_env_vars.sh /add_env_vars.sh
CMD source /add_env_vars.sh && service php7.0-fpm start

Php-fpmはシステム環境変数ではうまく機能しないようです。

詳細については-

2
Aidan Ewen

これはPHP-FPMのいたずらです。

  • clear_env = no/etc/php/7.2/fpm/pool.d/www.confを設定するので、

Dockerfileでphp-fpmをinit.dnot useserviceで開始します。
例:

CMD /etc/init.d/php7.2-fpm start && nginx -g 'daemon off;'

今すぐ環境変数を確認してください????

1
Thiago Pereira