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 のヒントを共有する

推薦する

いくつかの CSS3 タグの短縮形 (推奨)

border-radius: CSS3 丸い角構文: border-radius: 25px;楕円...

ウェブデザインのためのロイヤルブルーのカラーマッチング入門

古典的な色の組み合わせは力と権威を伝え、強いロイヤルブルーはあらゆる古典的な色の組み合わせの中心的な...

Windows 10 + mysql 8.0.11 zipインストールチュートリアルの詳細

準備する: MySQL 8.0 Windows zip パッケージのダウンロード アドレス: htt...

Div はフラッシュを覆います。フラッシュ透過方式により、フラッシュ上に DIV レイヤーを配置できます。

2つのタイプがあります: (異なるブラウザ) 1. IEブラウザで利用可能コードをコピーコードは次の...

共通要素のデフォルトのマージンとパディング値に関する議論

今日は、さまざまなブラウザでのデフォルト要素のマージン値が何であるかという問題について説明しました。...

JavaScript 関数のコンテキストのルールは何ですか?

目次1. ルール 1: Object.Method() 1.1 ケース1 1.2 ケース2 1.3 ...

ウェブページ上でデスクトップ exe プログラムを呼び出す簡単な方法

この記事では主に、Web ページ上でデスクトップ exe プログラムを呼び出す方法を紹介します。 W...

editplus の Zen コーディング例コードの説明

たとえば、次のように入力します。 XML/HTML コードdiv#ページ>(div#ヘッダー&...

MySQL で重複レコードをクエリして削除する方法の完全なガイド

序文この記事では主に、MySQL で重複レコードをクエリして削除する方法を紹介します。参考と学習のた...

KVM ベースの SRIOV パススルー構成とパフォーマンス テストの詳細な説明

SRIOVの導入、VFパススルー構成、パケット転送速度性能テスト目次1. SRIOVの紹介2. 環境...

WeChatアプレット開発の章:落とし穴の記録

最近、会社初のミニプログラムの開発に参加しました。開発経験は基本的にWebViewをベースとしたハイ...

17 個の JavaScript ワンライナー

目次1. DOMとBOM関連1. 要素にフォーカスがあるかどうかを確認する2. 要素の兄弟ノードをす...

Ubuntu 18.04 に Anaconda3 をインストールするための詳細なチュートリアル

Anaconda は、conda、Python、およびそれらの依存関係など、180 を超える科学パッ...

トランザクションとロックを表示するための MySQL の一般的なステートメント

データベース内のトランザクションとロックを表示するための一般的なステートメントトランザクションの待機...

MySQL 百万レベルのデータページングクエリ最適化ソリューション

データベースからクエリする必要があるテーブルに数万件のレコードがある場合、すべての結果を一度にクエリ...