Memo

メモ > サーバ > 各論: Docker > 値のやりとり

■値のやりとり
■environment docker-compose.yml にて以下のように指定すると、
environment: TZ: Asia/Tokyo
phpinfo() では以下が表示されている
Environment TZ: Asia/Tokyo PHP Variables $_ENV['TZ']: Asia/Tokyo date Default timezone: Asia/Tokyo date.timezone: Asia/Tokyo
この値は自由に定義することができ、その内容は環境変数として取得できる 具体的には docker-compose.yml にて以下のように指定すると、
environment: TZ: Asia/Tokyo TEST_VALUE1: TEST TEST_VALUE2: TEST MESSAGE TEST_VALUE3: "This is a test message!"
phpinfo() では以下が表示された
Environment TZ: Asia/Tokyo TEST_VALUE1: TEST TEST_VALUE2: TEST MESSAGE TEST_VALUE3: This is a test message! PHP Variables $_ENV['TZ']: Europe/Rome $_ENV['TEST_VALUE1']: TEST $_ENV['TEST_VALUE2']: TEST MESSAGE $_ENV['TEST_VALUE3']: This is a test message!
また、PHPプログラム内で以下のようにすると、
<p>TEST_VALUE1: <?php echo $_ENV['TEST_VALUE1'] ?></p> <p>TEST_VALUE2: <?php echo $_ENV['TEST_VALUE2'] ?></p> <p>TEST_VALUE3: <?php echo $_ENV['TEST_VALUE3'] ?></p>
以下のように各値を取得できた
TEST_VALUE1: TEST TEST_VALUE2: TEST MESSAGE TEST_VALUE3: This is a test message!
日本語も扱えるが、その場合は docker-compose.yml の文字コードをUTF-8Nにしておく必要がある ■.env docker-compose.yml にて以下のように指定すると、
environment: TZ: Asia/Tokyo TEST_VALUE1: TEST TEST_VALUE2: テストメッセージ! TEST_VALUE3: "This is a test message!" TEST_VALUE4: ${SAMPLE_VALUE4} TEST_VALUE5: ${SAMPLE_VALUE5}
TEST_VALUE4 と TEST_VALUE5 の内容は、docker-compose.yml と同階層に置いた .env で以下のように指定できる
SAMPLE_VALUE4=TEST SAMPLE_VALUE5="メッセージ"
さらに docker-compose.yml にて以下のように指定すると
TEST_VALUE6: ${SAMPLE_VALUE6:-XXX} TEST_VALUE7: ${SAMPLE_VALUE7-YYY}
.env で値が未設定またはカラの場合に「XXX」が、 .env で値が未設定の場合に「YYY」が、 それぞれのデフォルト値として使用される つまり、.env はデフォルト値の定義場所として使用できる 案外知られてないdocker-composeの環境変数定義の記法 - Qiita https://qiita.com/fagai/items/b944950b26af19453c02 ■secrets ※ファイルを参照できなかった 改めて検証したい environment や .env の方法で機密情報を渡すと、環境変数に値が現れるので意図しない値の流出が起こりえる 開発環境で使う分には問題無いが、本番環境では問題になる 機密情報は secrets の仕組みで渡す必要があるらしい Docker Composeの環境変数ではなくsecretsで秘密情報を扱う - Qiita https://qiita.com/myabu/items/89797cddfa7225ff2b5d Docker/Docker ComposeのSecretsを試す - そんな今日この頃の技術ネタ https://blue1st-tech.hateblo.jp/entry/2017/08/27/230546 以下は機密情報を環境変数で扱おうとしている? Dockerコンテナのクレデンシャル設計パターン | DevelopersIO https://dev.classmethod.jp/articles/creds-design-pattern-in-docker/ 以下も参考になるか docker secretsの部分的導入 | WordPress試用 https://elephantcat.work/2021/10/15/post-1020/ 以下によると、暗号化して環境変数に展開するくらいしかなかった? ECSの場合はマネージドな仕組みに任せることができそうだが、ECSを使わない場合は簡単では無い問題かもしれない ECSでごっつ簡単に機密情報を環境変数に展開できるようになりました! | DevelopersIO https://dev.classmethod.jp/articles/ecs-secrets/

Advertisement