このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Docker超入門:Docker ComposeでApache Webサーバーを立ち上げる①

Docker ComposeでApache Webサーバーを立ち上げる①
Docker Composeを使って、Apache Webサーバーのコンテナを立ち上げる手順を解説します!
この記事は2部構成でお届けします。
まずは「コンテナの準備とcompose.yamlの作成」から見ていきましょう。
作業環境をクリーンにする
まず、古いコンテナやイメージを整理してクリーンな状態から始めます。
PS C:\Users\joeac> docker system prune -a
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] yこのコマンドを実行すると、停止済みのコンテナや不要なイメージが削除され、以降の操作がスッキリ見やすくなります。
ボリュームも残っているようであれば、ここで削除しておきます。
手順1:作成するコンテナの情報を整理しよう
Docker Composeを使う前に、どんなコンテナを作るか整理します。
Webサーバーには有名な2つの選択肢があります。
| ソフトウェア | 特徴 |
|---|---|
| Apache | 長年の実績があり、安定性・拡張性が高い。モジュール構成が柔軟。 |
| Nginx | 軽量・高速でリバースプロキシにも強い。モダンな構成に向く。 |
今回は、歴史が長く実績のあるApache(httpd) を使います。
ApacheのDockerイメージ
Apacheの公式Dockerイメージは httpd です。
ここがよく間違われるポイントで、nginxは"nginx"ですがApacheは"httpd" なので注意してください。
| 項目 | 設定値 |
|---|---|
| 使用するイメージ | httpd:2.4 |
| 公開ポート番号 | 80:80 |
つまり「ホストのポート80をコンテナのポート80に接続」します。
ブラウザで「http://localhost」にアクセスすれば、Apacheのトップページが表示されるようにします。
手順2:作業ディレクトリとcompose.yamlの作成
ディレクトリを作成する
Docker Composeでは、デフォルトでカレントディレクトリにある compose.yaml ファイルを読み込みます。
そのため、作業用のフォルダを作ってそこにYAMLを置くのが基本です。
以下のコマンドを実行します。
cd desktop/docker
mkdir apache
cd apache実行結果
PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker> mkdir apache
Directory: C:\Users\joeac\Desktop\docker
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2025/10/05 2:21 apache
PS C:\Users\joeac\Desktop\docker> cd apache
PS C:\Users\joeac\Desktop\docker\apache>これで準備OKです。
VS Codeでcompose.yamlを作成
次にVS CodeでYAMLファイルを作ります。
code compose.yaml実行結果
PS C:\Users\joeac\Desktop\docker\apache> code compose.yaml
上記コマンドでVS Codeが起動したら、以下の内容を入力して保存します👇
version: '3'
services:
apache:
image: httpd:2.4
ports:
- "80:80"これでDocker Composeの設定完了です!
YAML形式のポイント解説
YAMLは「読みやすく、書きやすい」構造化データ形式ですが、
インデントのズレやスペース不足でエラーになりやすい点には注意が必要です。
キーの後の「:」や「ー」の後に半角スペース「凵」が必要なので注意してください。「httpd:2.4」のようにイメージのバージョンを指定する場合は、逆に半角スペース「凵」を入れるとエラーになります。
階層構造には癖があるので、サンプルの記述を参考にするとよいです。
version:凵'3' ←省略が推奨されている
services:
凵凵apache:
凵凵凵凵image:凵httpd:2.4
凵凵凵凵ports:
凵凵凵凵凵凵-凵"80:80"
※Docker Composeのバージョンに「version '3'」を指定していますが、こちらは現在、公式ドキュメントでも記述しないことが推奨されています。
| ルール | 内容 |
|---|---|
| インデント | 半角スペースで字下げ(タブ禁止) |
| スペース数 | 2または4つで統一する。 |
| 「:」や「-」の後 | 必ず半角スペースを入れる。 |
| ブロック構造 | 改行とインデントで階層を表現する。 |
例えば、以下のようにずれているとエラーになります。
❌ 間違い例:
services:
apache:
image: httpd:2.4✅ 正しい例:
services:
apache:
image: httpd:2.4YAMLでは階層構造が正確でないと、Docker Composeがファイルを解析できません。
そのため、スペース2つのインデントを厳守しましょう。
compose.yamlで定義した内容の意味
| 要素 | 意味 |
|---|---|
| version | Docker Composeファイルのバージョン。ここでは3を指定(省略も可) |
| services | コンテナサービスの定義を開始するセクション |
| apache | サービス名(今回はApache Webサーバー) |
| image | 使用するDockerイメージ(httpdの2.4系を使用) |
| ports | ホストとコンテナ間のポートマッピング設定 |
| "80:80" | ホスト80番 → コンテナ80番に転送 |
つまり、このYAMLは「Apacheのコンテナをhttpd:2.4イメージで作り、ホストの80番ポートに公開する」という設定になっています。
図で理解する!Apacheコンテナ構成
以下のイメージで理解しておくとわかりやすいです👇

まとめ
今回作成したcompose.yamlを使えば、以下の一行でApacheコンテナを立ち上げられます👇
docker compose up -dYAMLファイルに設定をまとめておくことで、
毎回長いdocker runコマンドを打つ必要がなくなります。
次回の「Docker ComposeでApache Webサーバーを立ち上げる②」では、
実際にこのコンテナを起動し、ブラウザからアクセスしてApacheの画面を確認します!
💡 ポイントまとめ
- ApacheのDockerイメージは「httpd」
- compose.yamlを使うと設定が一目でわかる。
- YAMLのインデントはスペースで統一!
