Docker | 2週間で実務レベルに到達するDocker学習:環境変数と設定管理 - Day9

Docker Docker
スポンサーリンク

Day9:環境変数と設定管理 前半

テーマ:.env を使って「環境ごとの差」を吸収し、どこでも同じアプリを動かせるようにする

Day9 の前半では、Docker 実務で必須となる
環境変数(Environment Variables)

.env ファイルによる設定管理
を、初心者でも迷わず理解できるように丁寧に解説します。

今日のゴールは、
「開発・テスト・本番で設定を変えても、アプリ本体は同じまま動く」
という状態を作れるようになることです。


環境変数とは何か

アプリに“外から設定を渡す”ための仕組み

環境変数は、アプリのコードに直接書かずに
外部から設定値を注入するための仕組み です。

例:

  • DB のパスワード
  • API の URL
  • ポート番号
  • 本番か開発かのモード

これらをコードに直書きすると危険で、変更も面倒です。

そこで環境変数を使います。


.env ファイルとは何か

環境変数をまとめて管理する“設定ファイル”

.env は、環境変数を次のように書くファイルです。

DB_HOST=db
DB_USER=user
DB_PASSWORD=secret
DB_NAME=myapp

このファイルを Docker やアプリが読み込むことで、
設定を外部から注入できる ようになります。


なぜ .env が必要なのか(重要ポイント)

コードにパスワードを書かないため

悪い例:

const password = "secret";
JavaScript

これは GitHub に上げた瞬間に 情報漏洩 です。

開発・本番で設定を変えたいから

開発では:

DB_HOST=localhost

本番では:

DB_HOST=db.internal

でも、アプリのコードは一切変更しない。
これが 環境差異の吸収 です。

チーム全員が同じ設定を再現できる

.env.example を共有すれば、
誰でも同じ環境を作れます。


Docker と環境変数の関係

Docker は環境変数を簡単に扱える

Docker では、次のように環境変数を渡せます。

docker run -e DB_HOST=db -e DB_USER=user myapp

しかし、毎回これを書くのは面倒なので .env を使います。


Docker Compose と .env の組み合わせ

Compose は .env を自動で読み込む

docker-compose.yml:

services:
  api:
    image: myapp
    environment:
      DB_HOST: ${DB_HOST}
      DB_USER: ${DB_USER}
      DB_PASSWORD: ${DB_PASSWORD}
YAML

.env:

DB_HOST=db
DB_USER=user
DB_PASSWORD=secret

Compose は ${DB_HOST} の部分を
.env の値で置き換えてくれます。


DB 接続設定を環境変数で管理する例

Node.js の例:

const mysql = require("mysql2");

const connection = mysql.createConnection({
  host: process.env.DB_HOST,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME
});
JavaScript

ポイント:

  • コードにはパスワードを書かない
  • すべて process.env から読み込む
  • 開発・本番で .env を変えるだけで動く

これが 環境差異を吸収する ということです。


前半まとめ

あなたがここまで理解できていれば、Day9 前半はクリアです。

  • 環境変数は「外から設定を渡す仕組み」
  • .env は環境変数をまとめて管理するファイル
  • DB 接続設定は必ず環境変数で管理する
  • コードにパスワードを書かない
  • Docker Compose は .env を自動で読み込む
  • 開発・本番で設定を変えてもコードは同じまま
タイトルとURLをコピーしました