こんにちは、hachi8833です。
Evil Martians流のRails 6 Docker dev環境をやっていて迷った点をメモします。macOS環境でのDocker Desktopが前提です。
1. Docker dev環境のためのconfig.hostsの追加は通常は不要
DockerのRails 6 development環境では、一部の場合を除いてconfig/environments/development.rbに以下を追加する必要はありませんでした(後述)。
config.hosts << 'localhost'
上の記事にあるように、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'
- リポジトリ: ngrok - secure introspectable tunnels to localhost
- サイト: Serveo: expose local servers to the internet using SSH
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.permissions
、config.web_console.whitelisted_ips
の順でホワイトリストを参照していますので、どちらに設定してもいいようになっています。デフォルトではどちらにもホワイトリストは設定されていません。
おまけ
Docker環境に限りませんが、ウイルスチェックソフトのパーソナルファイアウォールにDocker development環境サーバーへのアクセスを邪魔されることもあります。ブラウザからアクセスできない場合はパーソナルファイアウォールの設定もチェックしてみましょう。
自分もESETのライセンスを更新したときにESETの設定が初期化されてアクセスできなくなり、上述の2つの設定をあれこれ変えてみたりしたのですが、結局ESETのパーソナルファイアウォールの設定を変えてやっと解決したのでした😅。