Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

Rails 6: Docker dev環境のconfig.hostsとwhitelisted_ipsについて

こんにちは、hachi8833です。

Evil Martians流のRails 6 Docker dev環境をやっていて迷った点をメモします。macOS環境でのDocker Desktopが前提です。

Rails 6.1のDocker開発環境構築をEvil Martians流にやってみた(更新)

1. Docker dev環境のためのconfig.hostsの追加は通常は不要

DockerのRails 6 development環境では、一部の場合を除いてconfig/environments/development.rbに以下を追加する必要はありませんでした(後述)。

  config.hosts << 'localhost'

Rails 6にDNSリバインディング攻撃防止機能が追加された(翻訳)

上の記事にあるように、development環境のconfig.hostsには既に"localhost"がデフォルトで含まれていますので、ブラウザからhttp://localhost:3000でアクセスできます。ただしdevelopment環境以外のconfig.hostsは空欄になっているので、少なくとも本番環境では別途config.hostsに自ドメインを追加します。

Rails.application.config.hosts = [
  IPAddr.new("0.0.0.0/0"), # All IPv4 addresses.
  IPAddr.new("::/0"),      # All IPv6 addresses.
  "localhost"              # The localhost reserved domain.
]

ngrokなどを使う場合は必要

config/environments/development.rbにconfig.hostsを追加する必要があるのは、たとえばngrokやserveoで外部からdevelopment環境にアクセスする場合、あるいはlvh.meでアクセスする場合です。
ngrokを使う場合はconfig/environments/development.rbに以下を追加します。

config.hosts << '.ngrok.io'

2. web-consoleを使うならwhitelisted_ipsの追加が必要

一方、DockerのRails 6 development環境でweb-consoleを動かすのであれば、config/environments/development.rbに以下のような行を追加する必要があります。

  config.web_console.whitelisted_ips = '0.0.0.0/0'

web-console gemはRailsのdevelopment環境にデフォルトで入りますが、better_errorsやRubyMineなどをデバッグに使っているのであればなくてもいいかもしれません。ところでweb-consoleって実際どのぐらい使われているのでしょう?🤔

参考: web-console を使えば Rails App のデバックが楽になる - Qiita

追記: config.web_console.permissionsについて

上の記事にあるように、現在のweb-console gemは、config.web_console.permissionsconfig.web_console.whitelisted_ipsの順でホワイトリストを参照していますので、どちらに設定してもいいようになっています。デフォルトではどちらにもホワイトリストは設定されていません。

おまけ

Docker環境に限りませんが、ウイルスチェックソフトのパーソナルファイアウォールにDocker development環境サーバーへのアクセスを邪魔されることもあります。ブラウザからアクセスできない場合はパーソナルファイアウォールの設定もチェックしてみましょう。

自分もESETのライセンスを更新したときにESETの設定が初期化されてアクセスできなくなり、上述の2つの設定をあれこれ変えてみたりしたのですが、結局ESETのパーソナルファイアウォールの設定を変えてやっと解決したのでした😅。

関連記事

クジラに乗ったRuby: Evil Martians流Docker+Ruby/Rails開発環境構築(翻訳)

docker-composeを便利にするツール「dip」を使ってみた


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。