0Pricing
Docker & DevOps Fundamentals · レッスン

環境変数と.envファイル

環境変数、変数置換、.envファイルを使ってComposeサービスを適切に設定し、開発、ステージング、本番環境で同じComposeファイルを利用できるようにします。

「環境変数と.envファイル」はCoddyKit上の無料Docker & DevOps Fundamentalsレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDocker & DevOps Fundamentals学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Docker & DevOps Fundamentalsコースには全4レッスンが含まれています。

設定を外部化する理由

Composeファイル内にパスワードやポートをハードコードすると、壊れやすく安全性も低くなります。環境変数を使えば、YAMLを編集せずに環境ごとに動作を変更できます。

  • シークレットをバージョン管理から除外する
  • 1つのComposeファイルをどこでも再利用する
  • 実行時に値を上書きする

environmentキー

サービス内で、environmentの下にマップとして変数を宣言します。これらの変数は起動時にコンテナへ注入されます。

services:
  db:
    image: postgres:16
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: secret

リスト形式

同じキーには、KEY=VALUE形式の文字列リストも指定できます。読みやすいと思う形式を選んでください。

services:
  db:
    image: postgres:16
    environment:
      - POSTGRES_USER=app
      - POSTGRES_PASSWORD=secret

.envファイル

Composeは、プロジェクトディレクトリにある.envという名前のファイルを自動的に読み込みます。そこに値を一度定義し、${VAR}による置換で参照します。

# .env
PG_USER=app
PG_PASS=secret
WEB_PORT=8080

変数置換

Composeファイル内の任意の場所で${VAR}を使えます。Composeは解析前に、.envまたはシェルから取得した値へ置き換えます。

services:
  db:
    image: postgres:16
    environment:
      POSTGRES_USER: ${PG_USER}
      POSTGRES_PASSWORD: ${PG_PASS}

デフォルト値

${VAR:-default}を使うと、代替値を指定できます。変数が未設定または空の場合はデフォルト値が使われるため、完全な.envファイルがなくてもスタックを動作させられます。

ports:
  - "${WEB_PORT:-80}:80"

必須変数

${VAR:?message}を使うと、変数を必須にできます。変数がない場合、Composeは指定したメッセージとともに処理を中止するため、設定ミスを早期に検出できます。

environment:
  API_KEY: ${API_KEY:?API_KEY must be set}

env_fileディレクティブ

置換だけでなく、変数を含むファイル全体をコンテナへ直接渡すには、env_fileを使います。各行がコンテナの環境変数になります。

services:
  api:
    image: myapi:1.0
    env_file:
      - api.env

優先順位のルール

変数が複数の場所で定義されている場合、Compose は優先順位に従って適用します。シェル環境変数は .env より優先され、明示的な environment: エントリは env_file より優先されます。

  • シェル / CLI の -e が最優先
  • 次に environment:
  • 次に env_file
  • 最後にイメージのデフォルト値

解決済みの値を確認する

docker compose config を実行すると、すべての置換を適用した、完全に解決済みの Compose ファイルが出力されます。実際に実行される内容を確認するのに便利です。

docker compose config

シークレットを Git の外で管理する

プレースホルダーを含む .env.example をコミットし、実際の .env は .gitignore に追加してください。実際の本番環境のシークレットには、環境変数より Docker secrets を使用することをおすすめします。

# .gitignore
.env

簡単な確認

置換におけるデフォルト値はどのように機能しますか?

まとめ

これで、環境データを使って Compose を適切に設定できるようになりました。

  • environment: はサービスごとに変数を注入します
  • .env ファイルは ${VAR} の置換に値を提供します
  • :- はデフォルト値を指定し、:? は必須値として扱います
  • docker compose config は解決済みの結果を表示します

これにより、1 つの Compose ファイルをあらゆる環境で利用できるようになります。

よくある質問

「環境変数と.envファイル」レッスンは無料ですか?

はい。「環境変数と.envファイル」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Docker & DevOps Fundamentalsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Docker & DevOps Fundamentalsコースには全4レッスンが含まれています。

「環境変数と.envファイル」で何を学びますか?

環境変数、変数置換、.envファイルを使ってComposeサービスを適切に設定し、開発、ステージング、本番環境で同じComposeファイルを利用できるようにします。 ブラウザで直接実行するハンズオンコードでDocker & DevOps Fundamentalsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Docker & DevOps Fundamentalsを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDocker & DevOps Fundamentalsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「環境変数と.envファイル」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDocker & DevOps Fundamentalsレッスンでコードを書いて実行できますか?

はい。すべてのDocker & DevOps Fundamentalsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Docker Composeとは
  2. Composeファイルの記述
  3. 複数サービスアプリのデプロイ
  4. 環境変数と.envファイル
← Docker & DevOps Fundamentalsに戻る