<Docker>最小構成!Nginxのみを構築する(Hello World)

Docker
この記事が対象とする環境
ホスト(HOST) ※実行マシン
Windows
Docker Desktop v4.22.1
ゲスト(GUEST)※Dockerコンテナ
nginx v1.25.2

素のNginxを構築し、トップページを表示する

まずは超最小構成でNginxのWelcomeページを表示させます。

Docker Desktop起動

WindowsでDocker環境を構築する場合、「Docker Desktop」というアプリケーションが必要になります。こちらのサイトからダウンロードしてインストールしましょう。

Docker Desktop
Docker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today ...

Docker Desktopを起動すると次のような画面が表示されます(※バージョンによって見た目に違いがあるかもしれません)Docker Desktopを起動したら、いったんはそのままにしておいてください。

環境設定ファイルの作成

フォルダ構成

nginxを起動するだけであれば超シンプルでcompose.yamlのみあればOKです。

your root/
`-- compose.yaml

compose.yaml

Docker Composeで使用する環境構築コマンドを作成します。「compose.yaml」はテキストファイルで、Dockerで構築する環境の構成・動作を記載します。「docker-compose.yml」となっているのは古い記事で、現在の推奨は「compose.yaml」となります基本的にはDocker環境を作成したいルートフォルダに配置します。細かい説明は次のファイル中にコメントで残してあります。

your root\compose.yaml

services:
  #WEBサーバー
  nginx:
    #イメージ+バージョン ※latestを常に最新が適用されるが意図しない挙動になる可能性あり
    image: nginx:1.25.2
    #コンテナ名
    container_name: nginx
    #ポート(外部ポート:内部ポート)
    ports:
      - 8080:80 

Docker起動

コマンドプロンプトを起動し、次のコマンドを実行します。コンテナ名「nginx」というWebサーバーが起動したことを確認できます。初回構築時のみ[pull]が発生します。

docker-compose up -d
[+] Running 8/8
 ✔ nginx 7 layers [⣿⣿⣿⣿⣿⣿⣿]    0B/0B   Pulled         7.4s
   ✔ 52d2b7f179e3 Pull complete                          2.9s
   ✔ fd9f026c6310 Pull complete                          3.8s
   ✔ 055fa98b4363 Pull complete                          3.8s
   ✔ 96576293dd29 Pull complete                          3.8s
   ✔ a7c4092be904 Pull complete                          3.9s
   ✔ e3b6889c8954 Pull complete                          3.9s
   ✔ da761d9a302b Pull complete                          3.9s
[+] Running 2/2
 ✔ Network yourroot1_default  Created                    0.0s
 ✔ Container nginx            Started                    0.5s

Webサーバー接続確認

ブラウザを起動し、URL「http://localhost:8080/」に接続します。nginxのwelcomeページが表示されました。

Docker停止

最後にDockerを停止しましょう。停止せずにDocker Desktopを終了したり、Windowsシャットダウンしたりすると、最悪の場合、データベースに関連するファイルが破損し、起動できなくなる可能性があります。

docker-compose down
[+] Running 2/2
 ✔ Container nginx            Removed           0.4s
 ✔ Network yourroot1_default  Removed           0.2s

Nginxで静的HTMLを表示させる

次にHelloWorldを表示させます。index.htmlをdocker-composeコマンドでnginxコンテナに配置しています。

環境設定ファイルの作成

フォルダ構成

your root/
|-- compose.yaml
|-- app/
|    `-- index.html
`-- nginx/
   `-- default.conf

compose.yaml

your root\compose.yaml

services:
  #WEBサーバー
  nginx:
    #イメージ+バージョン ※latestを常に最新が適用されるが意図しない挙動になる可能性あり
    image: nginx:1.25.2
    #コンテナ名
    container_name: nginx
    #ポート(外部ポート:内部ポート)
    ports:
      - 8080:80 
    volumes:
      #静的ソース(ローカルフォルダ:コンテナフォルダ)
      - ./app/:/var/www/html
      #nginx設定ファイル(ローカルフォルダ:コンテナフォルダ)
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf

index.html

your root\app\index.html

<html>
<head>
	<title>sample page</title>
</head>
<body>
	<p>hello world!</p>
</body>
</html>

default.conf

nginxのフォルダ構成はデフォルトで「/var/www/html」になっています。

your root\nginx\default.conf

server {
  listen 80;
  root /var/www/html;
  
  location / {
      # ゲストOS上のWebアプリ(index.html等)カレントディレクトリ
      root /var/www/html;
      index index.html;
  }
}

Docker起動

docker-compose up -d
[+] Running 2/2
 ✔ Network yourroot2_default  Created        0.0s
 ✔ Container nginx            Started        0.4s

Webサーバー接続確認

ブラウザを起動し、URL「http://localhost:8080/」に接続すると「hello world!」が表示されます。

札幌在住エンジニア。JavaやPHPやWordPressを中心とした記事が中心です。

【SE歴】四半世紀以上
【Backend】php / java(spring) / c# / AdobeFlex / c++ / VB / cobol
【Frontend】 vue.js / jquery他 / javascript / html / css
【DB】oracle / mysql / mariadb / sqlite
【infrastructure】aws / oracle / gcp
【license】aws(saa-c03) / oracle master / XML Master / Sun Certified Programmer for the Java 2 Platform 1.4

Nobelをフォローする
Docker
Nobelをフォローする

コメント

タイトルとURLをコピーしました