このページで解説している内容は、以下の 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.4

YAMLでは階層構造が正確でないと、Docker Composeがファイルを解析できません。
そのため、スペース2つのインデントを厳守しましょう。

compose.yamlで定義した内容の意味

要素意味
versionDocker 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 -d

YAMLファイルに設定をまとめておくことで、
毎回長いdocker runコマンドを打つ必要がなくなります。

次回の「Docker ComposeでApache Webサーバーを立ち上げる②」では、
実際にこのコンテナを起動し、ブラウザからアクセスしてApacheの画面を確認します!

💡 ポイントまとめ

  • ApacheのDockerイメージは「httpd」
  • compose.yamlを使うと設定が一目でわかる。
  • YAMLのインデントはスペースで統一!