開発者ツール · Docker run から Docker compose コンバーター
Compose の環境変数: -e、--env-file、および interpolation
· 仕組み
ドッカー 作成 環境変数
Compose では変数を取得できる場所が 3 つあり、それぞれ動作が異なります。この投稿では、-e と --env-file をキーにマップし、Compose が何をいつ補間するかを説明します。
文字通り、動作中の Docker 実行が手書きの Compose ファイルに置き換えられた後、アプリはパスワード ${DB_PASSWORD} で接続しました
文字通り、動作中の Docker 実行が手書きの Compose ファイルに置き換えられた後、アプリはパスワード ${DB_PASSWORD} で接続しました。証拠: 環境式は、文字通りに指定された場合、リテラルのままです。使い捨てリテラルを使用して環境ソーシングを再現します。各ソース オカレンスを環境および env_file と組み合わせます。リテラル値とファイル境界を宛先レビュー用に予約します。
環境変数インシデントは、別の環境変数インシデントの境界として、トークナイザーがドル補間またはデフォルトを決して解決しないことも明らかにしています。証拠: トークナイザーはドル補間やデフォルトを決して解決しません。この環境調達制約は停止点です。製造動作を行わずに環境と env_file を検査し、リテラル値とファイル境界のホスト チェックを文書化します。
-e KEY=value は環境になります: — リストまたはマップ、およびホスト変数を通過する KEY のみの形式として
-e KEY=value は、環境: — リストまたはマップとして、およびホスト変数を通過する KEY のみの形式になります。証拠: -e 値は順序付けられた環境シーケンスを形成し、KEY のみの値はメモをトリガーします。環境ソーシング トークンを環境および env_file にトレースします。順序付けされた値を最終値フィールドから分離します。リテラル値とファイル境界はコレクションの外にあります。
関連する環境変数メカニズムの境界は、別個の環境変数の文法境界は、スペースと追加の等号が引用符で囲まれた値に存続することです。証拠: スペースと追加の等号は、引用符で囲まれた値にも残ります。この環境ソーシング ファクトを使用して、環境および env_file 内の 1 つのメンバーまたはスカラーを予測します。リテラル値やファイル境界について何かを決定する前に、警告を確認してください。
--env-file は env_file になります: — Compose 自体が読み取る .env ファイルとは異なる、コンテナーが読み取るファイル
--env-file は env_file になります。 — Compose 自体が読み取る .env ファイルとは別の、コンテナーが読み取るファイルです。証拠: --env-file 値は env_file エントリを形成し、参照ファイルは開かれていません。環境ソーシングシリアル化をモデルから判断します。環境および env_file での引用符は型を保護しますが、リテラル値とファイル境界の動作証明は提供しません。
環境変数のシリアル化に関する 2 番目の観察は、別の環境変数の出力境界として、ブラウザーが YAML を返すが、docker compose config は実行されないことです。証拠: ブラウザーは YAML を返しますが、docker compose config は実行しません。この環境ソーシング出力は、設定を使用できないコンテキストから分離します。環境と env_file をレビュー可能に保ち、リテラル値とファイル境界を個別にチェックします。
コンバーターによって補間は実行されません。ドル式はリテラル出力テキストのままです
補間は Compose ファイル内で発生します。${VAR} と ${VAR:-default} は、コンテナーが何かを認識する前に Compose によって解決されます。証拠: トークナイザーはドル補間やデフォルトを決して解決しません。補間はコンバーターによって実行されません。ドル式はリテラル出力テキストのままです。推測するのではなく、環境ソーシング例外で停止してください。環境および env_file の近くに追加する場合は、リテラル値とファイル境界に関連付けられたデプロイメント固有の理由が必要です。
もう 1 つの環境変数例外制約は、この環境変数セクションについては、この環境変数セクションのコマンドと警告をこの候補ファイルの横に置いておくというものです。証拠: リポジトリは、より広範な実行時または歴史的な証拠を提供しません。元の環境ソーシング コマンドは警告の横に残しておきます。比較により、環境と env_file にどのようなものが含まれているか、どのリテラル値とファイル境界の決定が手動のままであるかが示されます。
有効な例: -e POSTGRES_PASSWORD=secret -e TZ --env-file app.env — YAML、および各値が実行時に終了する場所
有効な例: -e POSTGRES_PASSWORD=secret -e TZ --env-file app.env — YAML、および各値が実行時に終了する場所。合成名から環境ソーシングの例を構築します。運用リテラル値やファイル境界の詳細を公開することなく、すべての環境と env_file 項目を追跡可能にします。
同じ環境変数のサンプル サンプルは、別個の環境変数例の境界は、別個の環境リストと env_file リストによって各コマンド ソースが明らかになることを示しています。証拠: 個別の環境リストと env_file リストにより、各コマンド ソースが明らかになります。ペアになった環境ソーシング ファクトは、environment および env_file に表示される必要があります。その行を記録し、リテラル値やファイル境界についての仮定を避けます。
生成されたテキストはローカルで検査できますが、Docker は Compose 解決を実行する必要があります
結果の確認 — docker compose config は完全に解決されたファイルを出力するので、コンテナーが何を受け取るかを確認できます。証拠: ブラウザは YAML を返しますが、docker compose config は実行しません。生成されたテキストはローカルで検査できますが、Docker は Compose 解決を実行する必要があります。環境ソーシングの結果を 1 つの観察可能な環境と env_file の違いに変換します。 Docker は、後のリテラル値とファイル境界の判定を所有します。
環境変数の結果の実装では、この環境変数セクションのオリジナルを保持することも示されます。この環境変数セクションのコマンドと警告は、この環境変数セクションの横にあるこの候補ファイルです。環境変数の結果のファクトは、この環境変数セクションのブラウザがこの環境変数セクションに貢献したものを定義します。docker はまだ環境変数を所有しています。結果の実行時判定は、この環境変数セクションのオペレータはまだ環境変数を所有しています。この環境変数セクションの結果のセキュリティ ポリシーは、リポジトリにまだ環境が必要です。変数 結果 シークレットは削除されました この環境変数セクションではこれらの責任を保持します この環境変数セクションでは生成されたサービスについて説明します。環境ソーシングの責任を分割します。変換は環境と env_file を書き込み、リポジトリはシークレットを削除し、オペレーターはリテラル値とファイル境界を検証します。
これでカバーされないもの — Docker シークレット、env ファイル内の引用ルール、イメージ自体の Dockerfile によって設定される変数
これでカバーされないもの — Docker シークレット、env ファイル内の引用ルール、イメージ自体の Dockerfile によって設定される変数。証拠: シークレットセクションとイメージ定義のデフォルトはモデルの外にあります。環境ソーシングのスコープを、ここに示す環境および env_file ブランチに制限します。隣接するフォームとデフォルトは、リテラル値とファイル境界の質問に答えることができません。
もう 1 つの環境変数のスコープ制限は、「別個の環境変数の制限境界」に続き、-e 値が順序付けされた環境シーケンスを形成し、KEY のみの値がメモをトリガーします。この環境ソーシング境界を除外として扱います。リテラル値やファイル境界についての推測よりも、正確な環境と env_file を優先します。
要点: 各変数がどのファイルから来たのかを知る - そしてコンバーターは、正しいキーの下に -e と --env-file を表示します。
要点: 各変数がどのファイルに由来するかを知ることができます。コンバーターは、正しいキーの下に -e および --env-file を表示します。ソース オプション、モデル フィールド、環境、および env_file 行と警告としての環境ソースを監査します。リテラル値とファイル境界を確認する前に、シークレットを削除してください。
最後に、環境変数の取り出しソースで確認します。別の環境変数の決定境界は、--env-file 値が env_file エントリを形成し、参照ファイルが開かれないことです。環境ソーシングを狭く絞り込みます。環境と env_file が候補です。リテラル値、ファイル境界、およびシェルの等価性は保証されません。