🚀 はじめに
この記事でわかること
- Docker Composeとは何か(一言で:複数のコンテナをまとめて管理するための仕組み)
- なぜ必要か(手作業の複雑さをYAMLの設定1つでシンプルに)
- 使わないとどうなるか(起動順や設定のばらつきで毎回つまずきがち)
- 5分で体験できるサンプル(WordPress + MySQLを一発起動)
こんな人向け
- 中学生〜大人まで、IT知識がほとんどない人
- 「Dockerは聞いたことあるけど、Composeって何?」をやさしく知りたい人
- 具体的なイメージや最初の一歩を掴みたい人
初心者でも安心な理由
- 難しい言葉を身近なたとえで説明
- 動く手順をそのまま掲載(コピペでOK)
- 用語のつまずきどころは注意書きでフォロー
✅ 概要解説
Docker Composeとは何か
たとえるなら、電源タップ+リモコン。
Webサーバー・データベースなど複数の家電(コンテナ)を1つのタップ(YAML) に挿して、ボタン1つ(コマンド1回)でまとめてオン/オフできます。
- Docker:アプリを小さな箱(コンテナ)として動かす技術
- Compose:その複数の箱の並べ方・つなぎ方(ネットワーク・共有データ・起動順など)をYAMLファイル1枚に書いて、一括で操作する仕組み

何のためにあるのか
- 手順を“設定”に変える:人が毎回打つコマンドを、YAMLに宣言して自動化
- 一貫性:同じ
compose.yamlがあれば、誰のPCでも同じ環境が再現 - 一括操作:起動・停止・ログ確認など、まとめて扱える
- 開発効率:Web+DBなどよくある組み合わせを1分で用意
Docker Composeがないとどうなる?
- それぞれのコンテナに対して
- イメージ選び、ポート、環境変数、ボリューム、ネットワーク…を毎回手で指定
- 起動順のミス(DBより先にアプリが上がってエラー)
- チームで環境が微妙に違う(“自分のPCでは動く”問題)
Composeなら:書くのは一度。回すのは何度でも。失敗しにくく、説明書いらず。
どんな場面で使える?
- ローカル開発:Webアプリ+DB+キャッシュを一発起動
- 学習用の検証:OSS(WordPress、PostgreSQL、Redis…)のお試しが簡単
- 自動テスト(CI):テストの前に依存サービスを一式立ち上げ
- 小規模運用:個人サーバーやデモ環境の簡易オーケストレーション
🧪 5分で体験:WordPress + MySQL を一発起動
“実際に動いた”体験がいちばん速い理解です。
1) フォルダとファイルを用意
プロジェクト用フォルダを作り、compose.yaml という名前で保存します(推奨名)。
mkdir my-wp && cd my-wp
# このフォルダに compose.yaml を作成
メモ:
docker-compose.ymlという古い名前でも動きますが、今はcompose.yamlが推奨です。
2) compose.yaml の中身(コピペOK)
services:
db:
image: mysql:8.0
restart: unless-stopped
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wp
MYSQL_PASSWORD: secretpw
MYSQL_ROOT_PASSWORD: rootpw
volumes:
- db_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-u", "root", "-prootpw"]
interval: 5s
timeout: 3s
retries: 10
wordpress:
image: wordpress:latest
depends_on:
db:
condition: service_healthy
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wp
WORDPRESS_DB_PASSWORD: secretpw
WORDPRESS_DB_NAME: wordpress
volumes:
- wp_data:/var/www/html
restart: unless-stopped
volumes:
db_data:
wp_data:
ポイントだけ超ざっくり
services: 起動したいコンテナの一覧(ここではdbとwordpress)environment: コンテナに渡す設定(パスワードなど)ports: 外(あなたのPC)と中(コンテナ) の通信をつなぐvolumes: データを消えにくく保管(コンテナを消しても残せる)depends_on.condition: service_healthy: DBの準備ができてからWordPressを起動
注意:YAMLはインデント(スペース)命。タブは使わないでください。
3) 起動→アクセス→停止
# 1. 起動(初回はイメージを自動ダウンロード)
docker compose up -d
# 2. 動作確認(一覧表示)
docker compose ps
# 3. ブラウザで開く
# http://localhost:8080 にアクセス → WordPressの初期セットアップ画面が出れば成功!
# 4. ログも見られます(終了は Ctrl + C)
docker compose logs -f db
# 5. 片付け(-v でボリュームも削除:データ完全消去)
docker compose down -v
小ワザ:
-dはバックグラウンド起動。迷ったらdocker compose --helpをどうぞ。
🔍 Composeの“見取り図”を頭に入れる
┌─────────────────────────────┐
│ compose.yaml │ ← 設定書(何を、どうつなぐか)
├───────────┬───────────────┤
│ service: db │ service: wordpress │ ← コンテナの箱
│ (MySQL) │ (PHP + Apache) │
│ │ ┌──────────────┐ │
│ ┌────────┐ │ │ port 8080:80 │ │ ← ポート公開
│ │volume │─┘ └──────────────┘ │
│ │db_data │ ↑ │
│ └────────┘ depends_on: db │ ← 起動順の関係
└───────┬─────────────┴───────┘
│
volumes:
db_data, wp_data ← しっかり保存する場所
💡 小話・豆知識・逸話
docker composeとdocker-composeの違い
昔はハイフン付きのdocker-compose(別プログラム)でしたが、今はdocker compose(スペース) が主流。Docker本体の公式プラグインになり、インストール無しで使える環境が増えました。古い記事で見かけるハイフン版もまだ動くことがありますが、新しい書き方をおすすめします。compose.yamlが推奨docker-compose.ymlという名前でも動きますが、公式のCompose仕様ではcompose.yamlを推しています。迷ったらこれ。depends_onは“準備OK”まで待つ?
単にdepends_on: [db]だと“起動を始める順番”しか保証しません。
本当に準備ができたかを見るなら、上の例のようにhealthcheck+condition: service_healthyが安心。.envで秘密や共通設定を分離compose.yamlに直接パスワードを書かず、.envファイルに分けるとキレイ&安全性UP。
例:DB_PASSWORD=${DB_PASSWORD}のように置き換えできます。プロファイル(
profiles)でON/OFF
開発だけで使うツール(MailHogなど)はプロファイルで切替。
services:
mail:
image: mailhog/mailhog
ports: ["8025:8025"]
profiles: ["dev"]
# devプロファイルを有効にして起動
docker compose --profile dev up -d
- ボリューム vs バインドマウント
- ボリューム:データ保管に向く(コンテナと分離して管理)
- バインド:ローカルのフォルダをそのままマウント(コード編集の即時反映に便利)
- “仕様”は1つに統合
昔はversion: "3"などがありましたが、今はCompose Specificationに集約されました。versionキーは基本不要で、services:から書き始めます。
覚えておくと安心:困ったら公式ドキュメントの「Compose file reference」を見るのが最短ルートです。
📚 参考リンク
公式サイト・ドキュメント
- Docker 公式:Compose 概要(英語・日本語自動翻訳あり)
https://docs.docker.com/compose/ - Compose Specification(仕様サイト)
https://compose-spec.io/ - Compose file リファレンス
https://docs.docker.com/compose/compose-file/ - Docker Engine / Docker Desktop のインストール
https://docs.docker.com/get-docker/
Wikipedia
- Docker(日本語)
https://ja.wikipedia.org/wiki/Docker - Docker Compose(英語)
https://en.wikipedia.org/wiki/Docker_(software)#Docker_Compose
🛠️ 関連テーマ・次に理解すると良いこと
- Dockerの基礎(イメージ/コンテナ/ボリューム/ネットワーク)

【初心者向け】Docker(ドッカー)をやさしく解説|コンテナの仕組みを身近なたとえで理解しよう
- Dockerfile入門(自作アプリをコンテナ化)

【初心者向け】Dockerfile入門|ゼロから学ぶコンテナのレシピ
- Composeの実践技
healthcheckで安定起動profilesで環境切替(dev/prod).envとenv_fileで秘密管理
- テスト自動化(CIで
docker compose up -d→テスト→down) - Kubernetes(K8s)入門(更に大規模な運用へ)
- まずはComposeで“複数コンテナの感覚” を掴むのが近道

【初心者向け】Kubernetes(クバネティス)をやさしく解説|コンテナ管理の“司令塔”を理解しよう
- まずはComposeで“複数コンテナの感覚” を掴むのが近道
- VS Code Dev Containers(エディタから開発環境を完全再現)
🎯 まとめ
- Docker Compose=“複数コンテナの電源タップ+リモコン”。YAML1枚で一括起動・停止できる。
- ない場合は手順が人依存&ミス増。Composeなら再現性と効率が大幅に上がる。
- 最初の一歩は、この記事のWordPress + MySQLを動かすだけでOK。
- 実務では
healthcheck・.env・profilesを覚えると一気に安定&便利。 - 次の学びはDocker基礎→Dockerfile→CI/CD→Kubernetesへと段階的に拡張。
補足(よくあるつまずき)
- ポートが使えない:すでに8080を使うアプリがいるかも。
"8081:80"などに変更。- パスワードを忘れた:
compose.yamlの値を修正→docker compose down -v→up -dで作り直し。- タブ混入:YAMLはスペースのみ。エディタの表示記号をONにすると発見しやすい。
- Windowsの改行差:基本はOKですが、
.envの末尾スペースや全角記号に注意。
