🦊

Docker × nginx でWebサーバー構築

に公開

🚀 はじめに

Webサーバーの立ち上げ方をしっかり理解したい🔥
この記事では Docker × nginx を使って、Webサーバー構築を学びます!
「なんとなく動いている」から脱却し、
仕組みごと理解できる環境構築を目指しましょう💪

📌 この記事でやること

Dockerとnginxを使用し、Webサーバーを構築します。
紹介する方法は2つ👇

方法 概要
✅ 方法① 手動構築(コンテナに入って自分で nginx を入れる)
✅ 方法② Dockerfile を使って自動構築

どちらの方法でも、最終的には ホストPCのブラウザから nginx にアクセスできるようにします 🌐

💡 前提知識:何が必要?

Webサーバーを Docker 上に立てるには、以下が必要です👇

  • nginxをインストールしたイメージ
  • イメージをもとに起動したコンテナ
  • ホストPC ⇔ コンテナ間の通信(ポートフォワーディング)

🔁 ポートフォワードとは?
ホストPCのポート番号と、Dockerコンテナ内のポート番号をつなぐ設定のこと
(ホストPCで8080にリクエストが来たら、コンテナ内の80番に渡してね!という意味)

🎯 ゴールはどこか

ブラウザで http://localhost:8080 にアクセスすると、
Docker コンテナ内の nginx がレスポンスを返す状態を作ります🌈
方法①でも②でも、最終的な成果物(Webサーバー動作)は同じです。


方法① 手動でWebサーバー構築

Dockerfileは使わず、コンテナの中で手作業で nginx をインストールしてみよう!

🔹 1. Ubuntuイメージを取得

docker pull ubuntu:22.04

🔹 2. コンテナ起動(ポートフォワード付き)

docker run -it -p 8080:80 --name myubuntu ubuntu:22.04 
  • -it : コンテナに入って対話モードにする
  • -p 8080:80 : ホスト側 8080 ポート → コンテナ内 nginx の 80 ポート
  • --name myubuntu : コンテナ名の指定

🔹 3. コンテナの中に入る

docker exec -it myubuntu /bin/bash 

以下は コンテナ内で実行👇

🔹 4. パッケージ情報を最新化

apt update 

🔹 5. nginxをインストール

apt install -y nginx 

🔹 6. nginx の起動

nginx 

⚠️ 通常 nginx はバックグラウンド起動されるため、
このまま exit するとコンテナごと止まってしまいます!

✅ 結果の確認

ブラウザでアクセス 👉 http://localhost:8080
⭐️Welcome to nginx!ページが表示されれば成功!


方法② Dockerfileで構築🌟

一度作ったら何度でも再利用できるイメージで構築しよう!

🔹 1. Dockerfileの作成

プロジェクトディレクトリに以下の内容で Dockerfile を作ります👇

# Ubuntuベース
FROM ubuntu:22.04

# nginxをインストールし、不要なキャッシュを削除
RUN apt-get update \
    && apt-get install -y nginx \
    && rm -rf /var/lib/apt/lists/*

# コンテナが即終了しないようにフォアグラウンドでnginxを実行
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]

🔹 2. ビルド(Dockerfileをもとにイメージを作成)

docker build -t my-nginx .
  • -t my-nginx:ビルドするイメージの名前
  • .:Dockerfile があるカレントディレクトリ

🔹 3. 起動

docker run -d -p 8080:80 --name webserver my-nginx 
  • -d: はバックグラウンド起動
  • -p:ホストとコンテナのポート接続

✅ 結果の確認(方法1と同じ結果)

ブラウザでアクセス 👉 http://localhost:8080
方法①と同じく Welcome to nginx! が表示されればOKです✨

📝 最後に

今回は、Dockerを使ったWebサーバーの立ち上げ方を解説しました!
実際に手を動かして構築してみると、Docker × nginx による Webサーバー構築の理解が深まってくると思います🏃‍♀️

参考記事

Discussion