2016-10-10 11 views
0

私はSymfony 2.4アプリケーションで必要なenv変数を取得するのに苦労しています。アイデアは、Amazon ECSによって管理されるドッカーコンテナにアプリケーションを配置することです。symfony 2.4のenvironement変数の取得

私は次のことを試してみました:

1 - で変数をエクスポートしますと、それを取得し、parameters.yml.distに続い

export SYMFONY__DATABASE__HOST=blabla 

database_host : '%database.host%' 

はしませんでした作業。コンポーザーをインストールした後は、parameter.yml.distのような形式でen parameter.ymlが作成されます。値は、e​​nv変数にあるものに変換されていません。

incenteevバンドルを無効にする必要があることがわかりました。どちらも助けなかった。

2 - 私は、incenteevの "env_map"

"env-map": { 
"database_host": "DB_HOSTNAME" 
} 

DB_HOSTNAME私はphp -i | grep DBを入力すると、私は同じよう

export DB_HOSTNAME=balbla.com 

にエクスポートしたenv変数であることを利用してcomposer.jsonに変数を追加します。それらの変数を参照してください。

Iはcomposer install --no-interactionを入力するときに、私はこのエラーメッセージを取得最初場合:第二ケースでYou have requested a non-existent parameter "database.host". をparameters.ymlはどんな値がparameters.yml.distであり、そしてIが追加のenv変数を使用して作成されcomposer.jsonはどこでも使用されていません。

https://github.com/symfony/symfony/issues/7555http://symfony.com/doc/current/configuration/external_parameters.html はあまり助けにはなりませんでした。

いいえ、みんないいですか?私は本当にこれらの変数を可能な限りクリーンな方法で取得したいと考えています。

+0

実際にあなたの問題に対処していないため、私の答えは削除されました。 "口を開け、足を入れる"。 –

答えて

1

私は同じトラブルに一度遭遇しました。 Platform.shのようにsymfonyのアプリケーションをホストする方法を見つけました。これは、Githubの上で利用可能です:

https://github.com/platformsh/platformsh-example-symfony

だから基本的に、あなたはconfig.ymlにインポートWICH parameters_prod.php設定ファイルを作成します。内部では、SYMOFNY_ENV = prod(プロビジョニングでプロビジョニングするときに設定する必要がある)かどうかをテストします。この変数が設定されていると、parameters_prod.phpの内容が取得されます。そうでなければ、(開発環境の場合)parameters.ymlに含まれる内容が取得されます。

また、parameters_prod.phpで環境変数を取得するには、getenv()PHPメソッドを使用します。

基本的に、あなたのparameters_prod。それ以外の場合は、

<?php 
if (getenv('SYMFONY_ENV') == 'prod') { 
    $container->setParameter('database_driver', 'pdo_mysql'); 
    $container->setParameter('database_port',  3306); 
    $container->setParameter('database_host',  getenv('DATABASE_HOST')); 
    $container->setParameter('database_name',  getenv('DATABASE_NAME')); 
    $container->setParameter('database_user',  getenv('DATABASE_USER')); 
    $container->setParameter('database_password', getenv('DATABASE_PASSWORD')); 
} 

とにかく(これは、あなたがしなければならないあなたのコンテナのエントリポイントとしてフォアグラウンドモードでのApacheを起動した場合ドッカーを行うには他にどんな事なく、これらの環境変数を取得することができます:PHPは、このようになります。コンテナは生き残っていません)

+0

私はそれを試してみたところ、うまくいきました。ありがとうございました。 – Bowman

関連する問題