Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Composeにおける環境変数と構成 | Docker Composeの操作
Docker Essentials

Composeにおける環境変数と構成

メニューを表示するにはスワイプしてください

docker-compose.ymlでの環境変数の利用

環境変数を使用することで、柔軟かつ再利用可能なDocker Compose構成を作成可能。変数を定義することで、ポート番号、イメージタグ、認証情報などの値をdocker-compose.ymlファイル内に直接記述することを避けられる。これらの変数を参照し、Docker Composeは実行時にその値を置き換える。この方法は、開発・テスト・本番など異なる環境へ同じアプリケーションをデプロイする際に特に有用。

Composeファイルで環境変数を定義・利用する手順:

  • .envファイルに環境変数をdocker-compose.ymlと同じディレクトリに保存する;
  • Composeファイル内で${VARIABLE_NAME}構文で変数を参照する;
  • シェルやCI/CDパイプラインで直接変数を渡して上書きすることも可能。

例えば、データベースのパスワードやアプリケーションのポートを環境変数で設定する場合、以下のような.envファイルを作成:

DB_PASSWORD=supersecret
APP_PORT=8080

docker-compose.yml内でこれらの変数を次のように参照:

version: "3.8"
services:
  web:
    image: myapp:latest
    ports:
      - "${APP_PORT}:80"
    environment:
      - DB_PASSWORD=${DB_PASSWORD}

docker-compose upを実行すると、Docker Composeは.envファイルから値を設定に反映する。この方法により、機密情報や環境固有のデータをComposeファイルから分離し、構成の移植性を高めることができる。

Composeファイルでのシークレットおよび機密データの管理

環境変数は便利だが、パスワードやAPIキー、証明書などの機密情報を扱う際には必ずしも最も安全な方法ではない。環境変数は、ログやプロセスリスト、バージョン管理を通じて意図せず露出する可能性があるため、注意が必要。Docker Composeでシークレットを管理するためのセキュリティ向上策として、以下の方法がある:

  • 機密値を別の.envファイルに保存し、このファイルを.gitignoreでバージョン管理から除外する;
  • Docker Swarmでデプロイする場合は、Docker secretsを利用し、シークレットをコンテナ内のファイルとして安全にマウントする;
  • ホスト上のファイルとしてシークレットを管理し、Composeファイルのvolumesキーでコンテナにマウントする。

例: データベースパスワードを露出させないため、db_password.txtというファイルに保存し、コンテナにマウント:

services:
  db:
    image: postgres:latest
    volumes:
      - ./db_password.txt:/run/secrets/db_password
    environment:
      - POSTGRES_PASSWORD_FILE=/run/secrets/db_password

この方法により、実際のシークレットはComposeファイルや環境変数から分離され、意図しない露出リスクを低減できる。常に構成やワークフローを見直し、シークレットが保護されていることを確認し、機密データをバージョン管理にコミットしないこと。

question mark

Docker Composeファイルで環境変数を使用する主な利点は何ですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  4

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  4
some-alt