Docker Compose で利用可能な環境変数の詳細な説明

Docker Compose で利用可能な環境変数の詳細な説明

Compose のいくつかの部分は、何らかの方法で環境変数を扱います。このチュートリアルは、必要な情報を見つけるのに役立ちます。

1. Composeファイル内の環境変数を置き換える

シェルの環境変数を使用して、Compose ファイルに値を入力できます。

ウェブ:
 画像: "webapp:${TAG}"

詳細については、Compose ファイル マニュアルの「変数の置換」セクションを参照してください。

2. コンテナ内の環境変数を設定する

docker run -e VARIABLE=VALUE ... を使用する場合と同様に、environment キーワードを使用してサービス コンテナーに環境変数を設定できます。

ウェブ:
 環境:
 -デバッグ=1

3. コンテナに環境変数を渡す

値を割り当てずにenvironmentキーワードを使用すると、 docker run -e VARIABLE ...使用する場合と同様に、シェル内の環境変数をサービス コンテナーに渡すことができます。

ウェブ:
 環境:
 -デバッグ

コンテナ内の DEBUG 変数の値は、Compose を実行するシェル内の同じ名前の変数から取得されます。

4. 「env_file」設定オプション

docker run --env-file=FILE ...使用する場合と同様に、 env_fileコマンドを使用して外部ファイルを使用して複数の環境変数をサービス コンテナーに渡すことができます。

ウェブ:
 環境変数:
 -web-variables.env

5. 'docker-compose run'を使用して環境変数を設定する

docker run -eコマンドと同様に、 docker-compose run -e使用して、1 回限りのコンテナーに環境変数を設定できます。

docker-compose 実行 -e DEBUG=1 web python console.py

変数を直接割り当てる代わりに、シェルから変数を渡すこともできます。

docker-compose 実行 -e DEBUG web python console.py

コンテナ内の DEBUG 変数の値は、Compose を実行するシェル内の同じ名前の変数から取得されます。

6. 「.env」ファイル

.env という名前の環境ファイル内の Compose ファイルで参照される環境変数、または Compose の設定に使用される環境変数のデフォルト値を設定できます。

$ 猫 .env
タグ=v1.5

$ cat docker-compose.yml
バージョン: '3'
サービス:
 ウェブ:
 画像: "webapp:${TAG}"

docker-compose upを実行すると、上記で定義したwebサービスはwebapp:v1.5イメージを使用します。アプリケーションの構成情報は、config コマンドを使用して端末に出力することで確認できます。

$ docker-compose 設定

バージョン: '3'
サービス:
 ウェブ:
 イメージ: 'webapp:v1.5'

シェル内の値は、 .envファイルで指定された値よりも優先されます。シェルで TAG を別の値に設定すると、その値がイメージで使用されます。

$ エクスポート TAG=v2.0
$ docker-compose 設定

バージョン: '3'
サービス:
 ウェブ:
 イメージ: 'webapp:v2.0'

複数のファイルで同じ環境変数を設定する場合、Compose が使用する値を選択する優先順位は次のとおりです。

  • ファイルを作成
  • 環境ファイル
  • Dockerファイル
  • 変数が定義されていません

次の例では、Environment ファイルと Compose ファイルの両方に同じ環境変数を設定します。

$ cat ./Docker/api/api.env
NODE_ENV=テスト

$ cat docker-compose.yml
バージョン: '3'
サービス:
 API:
 画像: 'node:6-alpine'
 環境変数:
  ./Docker/api/api.env を参照してください。
 環境:
  - NODE_ENV=本番

コンテナを実行する場合、Compose ファイルで定義された環境変数が優先されます。

$ docker-compose exec apiノード

プロセス.env.NODE_ENV
'生産'

Dockerfile内のARGまたはENV設定は、 environmentまたはenv_fileに Docker Compose エントリがない場合にのみ評価されます。

NodeJS コンテナの詳細

NODE_ENV=test node server.js のようにスクリプトを開始するための package.json エントリがある場合、これは docker-compose.yml ファイル内のすべての設定を上書きします。

7. 環境変数を使用してComposeを設定する

Docker Compose コマンドラインの動作を構成するために使用できる環境変数がいくつかあります。これらは COMPOSE_ または DOCKER_ で始まり、CLI 環境変数に記録されます。

8. リンクを介して環境変数を作成する

Compose ファイルの最初のバージョンで links オプションを使用すると、リンクごとに環境変数が作成されます。これらは、Link 環境変数リファレンスに記載されています。

ただし、これらの変数は非推奨となっています。代わりに、link はホストのエイリアスを作成します。

元のURL

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker Compose で環境変数を参照する方法の例
  • Docker での環境変数の使用とよくある問題の解決策

<<:  キャンバス操作プラグイン fabric.js の使い方を詳しく解説

>>:  MySQL のデバッグと最適化に関する 101 のヒントを共有する

推薦する

Linux 環境の Apache で https サービスを有効にする方法の詳細な説明

この記事では、Linux 環境の Apache で https サービスを有効にする方法について説明...

HTML テーブルタグと関連する改行の問題の詳細な分析

テーブルとは何ですか?テーブルは、データのキャリアである HTML テーブルです。以下は比較的標準的...

Unix/Linuxフォークの隠れたオーバーヘッド

目次1. フォークの起源2. 初期のUNIXオーバーレイ技術3. UNIXに導入される前のフォークの...

TypescriptとAxiosに基づくインターフェースリクエスト管理の詳細な説明

目次アイデア傍受を要求するレスポンスインターセプションhttpClient.tsを使用してリクエスト...

MybatisはSQLクエリのインターセプションと変更の詳細を実装します

序文インターセプターの機能の 1 つは、特定のメソッドの呼び出しをインターセプトできることです。イン...

Linux で time(NULL) 関数と localtime() を使用して現在の時刻を取得する方法

time(); 関数関数プロトタイプ: time_t time(time_t *timer)関数の目...

CSSを使用してダークモードとブライトモードを切り替える

Web Skills第5号では、CSSでダークモードやハイライトモードを実装するための技術的なソリュ...

Windows 環境での MySQL の解凍、インストール、バックアップ、復元

システム環境はserver2012です1. MySQLの解凍バージョンをダウンロードし、インストール...

CSS フロントエンドページレンダリング最適化属性 will-change の具体的な使用法

序文スクロールやサイズ変更などのスクロール イベントがトリガーされると、トリガーの頻度が非常に高くな...

MySQLのクラスタモードでのgalera-clusterのデプロイメントの詳細説明

目次1: galera-clusterの紹介2. galera-clusterの仕組み3: Mari...

CSSはカラフルでスマートな影の効果を実現します

背景前景要素から特定の色を継承する影の効果を作成する方法を知りたいと思ったことはありませんか?方法に...

docker compose を使ってワンクリックで分散構成センター Apollo を展開するプロセスの詳細な説明

導入分散について話すときは、分散構成センター、分散ログ、分散リンク トラッキングなどについて考える必...

Win10にMySQL8圧縮パッケージ版をインストールするチュートリアル

1 公式サイトからMySQL8をダウンロードしてインストールするMySQL8 ダウンロードアドレスこ...

MySQL のインデックスとビューの使用方法と違いの詳細な説明

序文この記事では主に、MySQL のインデックスとビューの使用方法と違いを紹介し、参考と学習のために...