docker-compose+ruby3+rails7+nginxのローカル環境にオリジナルのホスト名でアクセスする方法まとめ

はじめに

前回の投稿でdocker-compose+ruby3+rails7+nginxの環境構築方法をまとめました。

そのアプリケーションにアクセスするには localhostを使っていました。ローカルではまぁまぁ普通のことですよね。これを、完全に独自ホスト名でアクセスできるようにしてみたいと思います。

独自ホスト名と言ってもドメイン取得する必要はありません。

例えば以下のようなホスト名でもアクセスできるようになります。

  • abcde
  • samplelocalhost
  • xyz

では始めていきましょう!

筆者の環境

  • M1 Mac BigSur 11.4
  • docker-compose 1.29.2
  • Docker 20.10.7

やること

  • hostsを修正
  • nginxのconfファイルを修正
  • docker-compose.ymlを修正
  • Nginxイメージの再ビルド

本記事で使うホスト名

本記事ではrailslocalhostというホスト名でRailsアプリケーションにアクセスできるようにしたいと思います。

hostsを修正

Macではローカルで使用するhostを /etc/hostsで設定することができます。

/etc/hostsに以下を追加してください。

127.0.0.1 railslocalhost

nginxのconfファイルを修正

これまで localhostでアクセスできるようにしていたところを railslocalhostに変更します。

具体的には、 server_nameという箇所の修正になります。

# プロキシ先の指定
# Nginxが受け取ったリクエストをバックエンドのpumaに送信
upstream app {
  # ソケット通信したいのでpuma.sockを指定
  server unix:///app/tmp/sockets/puma.sock fail_timeout=30s;
}
server {
  listen 80;
  # ドメインもしくはIPを指定
  # server_name localhost;
  server_name railslocalhost; # ここを修正する!!!!
  # ドキュメントルートの指定
  root /app/public;
  large_client_header_buffers 4 32k;
  client_max_body_size 100m;
  error_page 404             /404.html;
  error_page 505 502 503 504 /500.html;
  try_files  $uri/index.html $uri @app;
  keepalive_timeout 120;
  # リバースプロキシ関連の設定
  location @app {
    proxy_ignore_client_abort on;
    proxy_read_timeout 300;
    proxy_connect_timeout 300;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_pass http://app;
  }
}

docker-compose.ymlを修正

Railsアプリケーションでは環境変数でアクセス許可するホスト名を設定することができます。

環境変数名は RAILS_DEVELOPMENT_HOSTSです。

ではdocker-compose.ymlにこの環境変数を追加します。

version: '3'
services:
  app:
    restart: always
    build:
      context: .
    environment:
      - RAILS_DEVELOPMENT_HOSTS=railslocalhost # ここを追加する!!!!
    volumes:
      - .:/app
      - /app/node_modules
      - public-data:/app/public
      - tmp-data:/app/tmp
      - log-data:/app/log
    command: sh launch.sh
    depends_on:
      - db
  db:
    restart: always
...
...

Nginxイメージを再ビルド

Nginxのconfファイルを修正したのでイメージを再ビルドする必要があります。

以下のコマンドを実行してイメージをビルドします。

$ docker-compose build nginx

起動する

ではコンテナ群を起動してみましょう。

以下のコマンドを実行します。

$ docker-compose up

ブラウザアクセス

ではブラウザで http://railslocalhost/でアクセスしてみましょう。

画像のような画面になったらOKです。

以上、簡単ではありますが、オリジナルのホスト名を使えるようにする方法まとめでした。

最後までお読みいただきありがとうございました。

Related Posts