ホストでnginxを使ってドメインをDockerのlocalhostのポートに割り当てる方法

この記事では、さくらVPS上のCentOS 9でnginxを使用し、Laravelのsailを使ってDockerコンテナ上で稼働するアプリケーションにドメインを割り当てる方法を説明します。

目次

仕様

  • VPS: さくらVPS
  • Webサーバー: nginx
  • フレームワーク: Laravel (sailを使用)
  • OS: CentOS 9

nginxをインストール

まず、nginxをインストールします。CentOS 9では、以下のコマンドでインストールできます。

sudo dnf install epel-release
sudo dnf install nginx

インストールが完了したら、nginxを起動し、自動起動設定を有効にします。

sudo systemctl start nginx
sudo systemctl enable nginx

Dockerをインストール

Laravelのsailを使用するには、Dockerが必要です。Dockerをインストールするには、以下のコマンドを実行します。

まず、Dockerのリポジトリを追加します。

sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

次に、Dockerをインストールします。

sudo dnf install docker-ce --nobest -y

インストールが完了したら、Dockerを起動し、自動起動設定を有効にします。

sudo systemctl start docker
sudo systemctl enable docker

Laravelをインストール

次に、Laravelをインストールします。以下のコマンドを実行してLaravelをインストールし、ディレクトリに移動します。

curl -s https://laravel.build/example-app | bash
cd example-app

docker-compose.ymlのコンテナの80番ポートを変更

Laravelをインストールしてデフォルトで入っているdocker-compose.ymlは80番です。80番はnginxで使用するので、別のポート番号にしてあげましょう。別のポート番号にしない場合、nginxが起動しませんのでご注意。

services:
  laravel.test:
    build:
      context: ./vendor/laravel/sail/runtimes/8.0
      dockerfile: Dockerfile
      args:
        WWWGROUP: '${WWWGROUP}'
    image: sail-8.0/app
    ports:
      - '8080:80' # ここを変更

sail upでLaravelを起動

Laravelのsailを使ってDockerコンテナを起動します。

./vendor/bin/sail up

取得したドメインをnginxのconf.dで設定

最後に、取得したドメインをnginxの設定ファイルで設定します。/etc/nginx/conf.dディレクトリに新しい設定ファイルを作成し、以下の内容を記述します。ポートは8080に設定しています。

例:/etc/nginx/conf.d/example.conf

server {
    listen 80;
    server_name example.com; # ここにドメイン名を入力
    location / {
        proxy_pass http://localhost:8080; # Dockerコンテナ上のLaravelアプリケーションへのリバースプロキシ設定
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

設定ファイルを保存した後、nginxの設定をリロードして変更を適用します。

sudo systemctl reload nginx

これで、ホストのnginxを使ってドメインがDockerのlocalhostのポートに割り当てられました。ブラウザでドメインを開いて、Laravelアプリケーションが表示されることを確認してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

こんにちは、板川恵司朗です。

目次