🗂

VPS(Rocky Linux 9.3)でnginxをDockerコンテナで起動する方法

2024/04/05に公開

VPS で環境構築中です。
今回は、Docker で nginx を動かします。

とりあえず起動

とりあえず、nginx を起動するだけなら、下記でできます。

docker run --name mynginx1 -p 80:80 -d nginx

docker ps で起動していることがわかります。

$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS          PORTS                               NAMES
2bce0957a7db   nginx     "/docker-entrypoint.…"   2 minutes ago   Up 40 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   mynginx1

止めるのは docker stop です。

$ docker stop mynginx1
mynginx1
$ docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS                     PORTS     NAMES
2bce0957a7db   nginx     "/docker-entrypoint.…"   2 minutes ago   Exited (0) 4 seconds ago             mynginx1

実行するとイメージをダウンロードして、コンテナが起動します。
VPS の 80 ポートが開いていると http で VPS の IP アドレスにアクセスするとサンプル画面が表示されます。

Docker Compose

次に Docker Compose で起動します。
設定ファイルとコンテンツファイルはホスト側で用意します。

ファイル

ディレクトリ構成は以下の通り。

.
├── conf
│   └── default.conf
├── docker
│   └── docker-compose.yaml
└── html
    └── index.html

ファイルの中は以下の通りです。

default.conf
server {
    listen       80;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

docker-compose.yaml
version: "3"
services:
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "80:80"
    volumes:
      # NGINXのコンフィグファイルをホストOSから、ゲストOSに連結する
      - ../conf/default.conf:/etc/nginx/conf.d/default.conf
      # NGINXのWebアプリ(index.html等)をホストOSから、ゲストOSに連結する
      - ../html:/usr/share/nginx/html

index.html
<!DOCTYPE html>
<html>

<body>
  Sample Page
</body>

起動

docker ディレクトリで以下のコマンドを実行するとコンテナが起動して、nginx も起動します。
VPS の 80 ポートが開いていると http で VPS の IP アドレスにアクセスすると index.html が表示されます。

docker-compose up -d

停止

docker ディレクトリで以下のコマンドを実行すると、コンテナが終了します。

docker-compose down

参考

https://www.nginx.com/blog/deploying-nginx-nginx-plus-docker/

Discussion