このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker入門】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の人気と信頼性を高めています。
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にマウント) |
この「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ページが表示されます。