はじめに
Dockerを使い始めると、次のような悩みに直面します。
- Webサーバーとアプリを別コンテナで動かしたい
docker runコマンドが増えて管理が大変- 開発環境を簡単に再現したい
そんな課題を解決するのが Docker Compose です。
本記事では、
- Docker Composeとは何か
- Dockerとの違い
- docker-compose.ymlの基本構造
- Web + アプリを立ち上げるハンズオン
を 初心者向けにわかりやすく解説します。
対象読者
- Dockerを触り始めた初心者
- 複数コンテナ管理に困っている人
- Docker Composeの使い方を体系的に学びたい人
Docker Composeとは?
Docker Compose は、複数のDockerコンテナを1つの設定ファイルで管理するツールです。
通常、複数のコンテナを起動する場合は以下のようになります。
docker run ...
docker run ...
docker run ...
Docker Composeを使えば、これらを 1コマンドで起動・停止できます。
docker compose up
Docker Composeを使うメリット
Docker Composeを導入する主なメリットは以下です。
- 複数コンテナをまとめて管理できる
- 環境構築手順をコード化できる
- チームで同一環境を簡単に共有できる
- 本番環境・検証環境の再現性が高い
特に ローカル開発環境 や 技術ブログのハンズオン では非常に相性が良いツールです。
DockerとDocker Composeの違い
初心者が混乱しやすいポイントを整理します。
| 項目 | Docker | Docker Compose |
|---|---|---|
| 管理単位 | コンテナ単体 | 複数コンテナ |
| 設定方法 | コマンド | YAMLファイル |
| 起動 | docker run | docker compose up |
| 用途 | 単体実行 | システム全体管理 |
docker-compose.ymlの基本構造
Docker Composeでは、docker-compose.yml にすべてを記述します。
version: "3.9"
services:
web:
image: nginx
ports:
- "8080:80"
よく使うキー
services:起動するコンテナ定義image:使用するDockerイメージbuild:Dockerfileからビルドports:ポートフォワーディングvolumes:ファイル共有
【ハンズオン】Docker ComposeでWebアプリ環境を作る
ここからは実際に Docker Composeを使ったハンズオン を行います。
Nginx + Webアプリ(HTML) の構成を作ってみましょう。
事前準備
以下がインストールされていることを確認してください。
- Docker Desktop(Docker Compose含む)
docker compose version
① プロジェクト構成を作成
mkdir docker-compose-sample
cd docker-compose-sample
docker-compose-sample/
├─ docker-compose.yml
└─ html/
└─ index.html
② HTMLファイルを作成
html/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Docker Compose 入門</title>
</head>
<body>
<h1>Hello Docker Compose!</h1>
<p>Docker Compose ハンズオン成功 🎉</p>
</body>
</html>
③ docker-compose.ymlを作成
version: "3.9"
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
設定の解説
image:Nginx公式イメージを利用ports:ローカル8080 → コンテナ80volumes:HTMLをリアルタイム反映
④ コンテナを起動
docker compose up -d
⑤ ブラウザで確認
ブラウザで以下にアクセスします。
http://localhost:8080
「Hello Docker Compose!」と表示されれば成功です。
⑥ コンテナを停止
docker compose down
よく使うDocker Composeコマンド
docker compose up -d # 起動
docker compose down # 停止
docker compose ps # 状態確認
docker compose logs # ログ確認
よくあるトラブルと対処法
ポートが競合する場合
lsof -i :8080
別ポートに変更することで解決できます。
Docker Composeが活躍する場面
- ローカル開発環境
- 技術ブログの検証環境
- CI/CDのテスト環境
- 小規模〜中規模システム
まとめ
Docker Composeを使うことで、
- 複数コンテナ管理が圧倒的に楽になる
- 開発環境の再現性が向上する
- docker run地獄から解放される
コメントを残す