Nginx(エンジンエックス)は、高速・軽量なWebサーバとして有名です。
静的ファイルの配信、リバースプロキシ、ロードバランサーなど、多機能で柔軟な構成が可能です。
この記事では、Dockerを使ってNginxを最もシンプルに立ち上げる方法を紹介します。
インストールからカスタマイズ、そしてオリジナルHTMLを配信するまで、ハンズオン形式で学んでいきましょう。
この記事のゴール
- DockerでNginxコンテナを起動できる
- ホストマシンのHTMLをコンテナにマウントして配信できる
- Nginxの設定ファイルを理解し、編集できる
事前準備
- Dockerがインストール済みであること
- macOS: Docker Desktop
- Windows: Docker Desktop
- Linux:
sudo apt install docker.io
など
確認コマンド:
docker version
Step 1. Nginxコンテナを起動する
まずは最も基本的なコマンドで、Nginxを立ち上げてみましょう。
docker run -d --name my-nginx -p 8080:80 nginx
コマンド解説
-d
:バックグラウンドで実行--name my-nginx
:コンテナ名を指定-p 8080:80
:ホストの8080番ポートをコンテナの80番にマッピングnginx
:使用するイメージ名
コンテナが起動したか確認します。
docker ps
出力例:
CONTAINER ID IMAGE COMMAND STATUS PORTS NAMES
abcd1234efgh nginx "/docker-entrypoint.…" Up 10 seconds 0.0.0.0:8080->80/tcp my-nginx
ブラウザで以下にアクセスします:
http://localhost:8080
「Welcome to nginx!」と表示されれば成功です。
Step 2. HTMLを自分で差し替えてみる(Bind Mount)
Nginxのデフォルトページではなく、自分のHTMLを表示してみましょう。
作業ディレクトリを準備
mkdir ~/nginx-handson
cd ~/nginx-handson
HTMLファイルを作成
echo "<h1>Hello Docker Nginx!</h1>" > index.html
コンテナをホストとマウントして起動
docker run -d --name my-nginx-local -p 8080:80 -v $(pwd):/usr/share/nginx/html nginx
ここで -v
オプションは bind mount です。
ホストのカレントディレクトリをNginxのドキュメントルート /usr/share/nginx/html
にマウントしています。
ブラウザを更新して、
http://localhost:8080
を開くと、あなたのHTMLが表示されるはずです 🎉
Step 3. Nginxの設定ファイルを確認する
Nginxの設定ファイルは /etc/nginx/nginx.conf
にあります。
中身を見てみましょう。
docker exec -it my-nginx-local cat /etc/nginx/nginx.conf
server
ブロックがあり、listen 80;
や root /usr/share/nginx/html;
などのディレクティブが確認できます。
Step 4. カスタム設定を使う
設定ファイルを自分で変更して反映するには、設定ファイルもマウントします。
カスタム設定を作成
nginx.conf
を作成します。
cat <<EOF > nginx.conf
events {}
http {
server {
listen 80;
root /usr/share/nginx/html;
index index.html;
location / {
add_header X-Custom-Header "Docker-Nginx";
}
}
}
EOF
コンテナ起動
docker run -d --name my-nginx-conf \
-p 8080:80 \
-v $(pwd)/index.html:/usr/share/nginx/html/index.html \
-v $(pwd)/nginx.conf:/etc/nginx/nginx.conf \
nginx
ブラウザでアクセスし、
開発者ツール → ネットワーク → レスポンスヘッダを確認するとX-Custom-Header: Docker-Nginx
が追加されています。
これで、設定ファイルをDockerで自由にカスタマイズできるようになりました。
Step 5. コンテナの停止と削除
実験が終わったら、コンテナを削除してクリーンアップします。
docker stop my-nginx-local my-nginx-conf my-nginx
docker rm my-nginx-local my-nginx-conf my-nginx
まとめ
内容 | 学んだこと |
---|---|
Nginxの起動 | docker run -d -p 8080:80 nginx |
HTMLの差し替え | bind mount で /usr/share/nginx/html を指定 |
設定ファイルの編集 | nginx.conf をホストからマウント |
停止・削除 | docker stop / docker rm |
次のステップ
docker-compose
を使ってNginx+アプリケーションを連携させるreverse proxy
の設定を学ぶ- SSL(Let’s Encrypt)対応のNginx構築
まとめ一言
Dockerを使えば、Nginxの学習・検証・実運用をすべて同じ環境で行えます。
わずか1行で起動し、すぐにWeb配信を体験できるのがDockerの強みです。
コメントを残す