Day8:Docker Compose入門 後半
テーマ:Compose を“実務レベル”で使いこなし、Web + DB の本格的な開発環境を構築できるようになる
後半では、前半・中盤で理解した
「複数コンテナをまとめる」「サービス名で通信できる」
という基礎をさらに深掘りし、実務で必須となる
- Web + DB の本格構成
- 永続化(データが消えない仕組み)
- 環境変数の管理
- Compose の便利機能
を、初心者でも迷わず理解できるように解説します。
ここを理解すると、あなたは
「Compose を使って本物の Web アプリ環境を構築できるエンジニア」
になります。
Web + DB を“実務レベル”に近づけるための Compose
まずは完成形のイメージ
以下は、実務でよく使われる Web + DB 構成の基本形です。
version: "3"
services:
web:
build: .
ports:
- "3000:3000"
depends_on:
- db
environment:
DB_HOST: db
DB_USER: root
DB_PASSWORD: password
DB_NAME: myapp
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: myapp
volumes:
- dbdata:/var/lib/mysql
volumes:
dbdata:
JavaScript後半では、この構成の意味を1つずつ深掘りしていきます。
DB のデータを“永続化”する理由
コンテナは消えるが、データは消えてはいけない
MySQL コンテナは削除すると中のデータも消えます。
しかし、アプリのユーザー情報や商品データが消えたら困ります。
そこで使うのが ボリューム(volume) です。
volumes:
- dbdata:/var/lib/mysql
JavaScriptこれは
「MySQL のデータを dbdata という外部ストレージに保存する」
という意味です。
重要ポイント
- コンテナを削除しても dbdata は残る
- 新しい DB コンテナを作っても同じデータを使える
- 本番環境では必須の設定
Compose を使うと、永続化も YAML に書くだけで完了します。
Web と DB の設定を“環境変数”で管理する
Web コンテナに DB 情報を渡す
environment:
DB_HOST: db
DB_USER: root
DB_PASSWORD: password
DB_NAME: myapp
JavaScriptWeb アプリはこれを process.env.DB_HOST のように読み取ります。
DB コンテナ側の設定
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: myapp
JavaScriptMySQL は環境変数で初期設定ができます。
重要ポイント
- Web と DB の設定はすべて環境変数で管理
- コードにパスワードを書かない
- 開発・本番で設定を切り替えやすい
Day9 の内容とつながる部分です。
depends_on で“起動順”を制御する
Web は DB が起動してから動くべき
Compose では次のように書きます。
depends_on:
- db
JavaScriptこれにより、
db → web の順で起動 します。
ただし深掘りポイント
depends_on は「起動順」を保証するだけで、
「DB が完全に準備できたか」は保証しません。
実務では healthcheck を使いますが、
Day8 の段階ではここまで理解できれば十分です。
Compose の“便利すぎる”操作方法
一括起動
docker compose up
一括停止
docker compose down
Web のログだけ見る
docker compose logs web
DB のログだけ見る
docker compose logs db
Web コンテナに入る
docker compose exec web sh
DB コンテナに入る
docker compose exec db sh
Compose を使うと、
複数コンテナを1つのアプリとして扱える
という感覚が一気に強まります。
Web + DB の“実務レベルの動作イメージ”
docker compose up の裏側で起きていること
あなたが docker compose up を実行すると、Compose は次のことを自動で行います。
- Web 用 Dockerfile をビルド
- MySQL イメージを取得
- 専用ネットワークを作成
- DB コンテナを起動
- Web コンテナを起動
- Web が DB に接続できるようにする
- DB のデータをボリュームに保存
あなたは 1コマンド しか打っていませんが、
Compose は裏側で 7つ以上の作業 を自動化しています。
これが Compose の本当の価値です。
後半まとめ
あなたがここまで理解できていれば、Day8 のゴールは完全達成です。
- Web + DB の本格構成を Compose で作れる
- DB のデータはボリュームで永続化する
- Web と DB の設定は環境変数で管理する
- depends_on で起動順を制御できる
- Compose は複数コンテナを“1つのアプリ”として扱える
docker compose upで Web + DB が一括起動する

