はじめに
前回の投稿で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です。

以上、簡単ではありますが、オリジナルのホスト名を使えるようにする方法まとめでした。
最後までお読みいただきありがとうございました。