このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Apacheコンテナ

ここでは、Docker Composeコマンドを使ったApacheコンテナの構築例を紹介します。

Apacheとは

まず、はじめにApacheについて説明しておきます。

 Apacheは、世界で最も広く使われているウェブサーバーソフトウェアの1つです。1995年にリリースされ、オープンソースのプロジェクトとして開発されています。Apacheは、安定性、柔軟性、豊富な機能セットなどの特徴により、多くのウェブサイトやアプリケーションで使用されています。

 Apacheは、1995年にリリースされたオープンソースのウェブサーバーソフトウェアであり、世界で最も広く使われています。Apacheの名前は、「A Patchy Server」という意味で、最初はNCSA HTTPdサーバーから派生したプロジェクトでした。その後、多くの開発者によって積極的にメンテナンスされ、機能が拡張されてきました。

 Apacheの開発は、Apacheソフトウェア財団(Apache Software Foundation)によって支援されています。この財団は、Apacheの開発や他のオープンソースプロジェクトの推進を行っています。

 Apacheの歴史的な重要なマイルストーンには、Apache 1.0のリリース(1995年)、Apache 2.0のリリース(2002年)、そしてApache HTTP Serverの最新バージョンであるApache 2.4のリリース(2012年)があります。これらのバージョンは、安定性、パフォーマンス、セキュリティの向上に貢献し、Apacheの人気と信頼性を高めています。

URL:https://httpd.apache.org/

Apacheコンテナの構成

以下のようにApacheコンテナを構成します。

 ローカルホストのカレントディレクトリ「./」とApacheコンテナの「/usr/local/apache2/htdocs/」をバインドマウントさせ、ローカルでホームページの編集が行えるようにします。

Apacheコンテナの作成

「compose.yaml」を作成して、Apacheコンテナを作成します。

不要なDockerオブジェクトの削除

まず、不要なDockerオブジェクトをすべて削除しておきます。

以下のコマンドを実行します。

・「docker system prune -a」コマンドを実行します。

Are you sure you want to continue? [y/N] の質問には「y」と入力します。

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
Deleted Containers:
(略)

・「docker system prune -a」コマンドで削除されなかったDockerオブジェクトは、個別に削除しておきます。

環境によって削除されずに残っているDockerオブジェクトは異なります。

compose.yaml の作成

・ディレクトリの作成と移動

Docker Composeでコンテナを作成するには、「compose.yaml」ファイルが必要になります。

 デフォルトでは、カレントディレクトリにある「compose.yaml」ファイルが読み込まれるため、作業ディレクトリに移動しておきます。

・「cd desktop/docker」コマンドを実行します。

PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker>

 「compose.yaml」ファイルを保存する「apache1」ディレクトリを作成して、作成したディレクトリに移動します。次のコマンドを実行します。

  • 「mkdir apache1」コマンド
  • 「cd apache1」コマンド
PS C:\Users\joeac\Desktop\docker> mkdir apache1

    Directory: C:\Users\joeac\Desktop\docker

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2024/04/14    16:31                apache1

PS C:\Users\joeac\Desktop\docker> cd apache1
PS C:\Users\joeac\Desktop\docker\apache1>
・VSCodeの起動

VSCodeで「compose.yaml」ファイルを作成します。

・「code compose.yaml」コマンドを実行します。

PS C:\Users\joeac\Desktop\docker\apache1> code compose.yaml

VSCodeが起動します。

・「compose.yaml」ファイルの編集

・「compose.yaml」ファイルを以下のように編集して保存します。

services:
  apache:
    image: httpd:latest
    container_name: apache_container
    ports:
      - "80:80"
    volumes:
      - ./:/usr/local/apache2/htdocs/
・定義内容の解説

「compose.yaml」ファイルの定義を解説します。

設定説明
servicesサービスの定義
apacheサービス名
imageコンテナに使用されるDockerイメージ(httpd:latest)
container_nameコンテナの名前(apache_container)
portsホストとコンテナのポートのマッピング(ホストのポート80をコンテナのポート80にマッピング)
volumesボリュームの設定(ホスト側のカレントディレクトリをコンテナのhtdocsにマウント)
「compose.yaml」ファイルの定義

 この「docker compose.yaml」ファイルは、Apache HTTP Serverコンテナを起動するための構成を定義しています。コンテナは「httpd:latest」というイメージを使用し、ホストのポート80とコンテナのポート80をマッピングしています。また、ホスト側のカレントディレクトリがコンテナの「/usr/local/apache2/htdocs/」にバインドマウントして、ApacheのDocumentRootとして使用します。

TOPページの「index.html」

TOPページの「index.html」を作成します。

・VSCodeの起動

VSCodeで「index.html」ファイルを作成します。

・「code index.html」コマンドを実行します。

PS C:\Users\joeac\Desktop\docker\apache1> code index.html

VSCodeが起動します。

・「index.html」ファイルの編集

・「index.html」ファイルを以下のように編集して保存します。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Welcome to Apache</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
            background-color: #f4f4f4;
        }
        .container {
            text-align: center;
            margin-top: 100px;
        }
        h1 {
            color: #333;
        }
        p {
            color: #666;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>Welcome to Apache!</h1>
        <p>This is a simple introduction to Apache HTTP Server.</p>
    </div>
</body>
</html>

コンテナの作成と実行

・「docker compose up -d」コマンドを実行します。

このコマンドは、「compose.yaml」ファイルを配置した場所で実行する必要があります。

PS C:\Users\joeac\Desktop\docker\apache1> docker compose up -d
[+] Running 7/7
 ✔ apache 6 layers [⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                  7.5s
   ✔ 13808c22b207 Pull complete                                     1.2s
   ✔ 6e9a8835eae4 Pull complete                                     0.7s
   ✔ 4f4fb700ef54 Pull complete                                     0.7s
   ✔ b927d001db70 Pull complete                                     1.5s
   ✔ 559cc51378ed Pull complete                                     1.9s
   ✔ d2b091e65160 Pull complete                                     1.9s
[+] Running 1/2
 - Network apache1_default     Created                              0.5s
 ✔ Container apache_container  Star...                              0.4s

Apacheコンテナへの接続

・Webブラウザを起動して、URLに「localhost」と入力します。

TOPページが表示されます。