概要
新しく Rails アプリケーションを Docker 環境で開発していたときに、web-console が表示されなくて困ったのでどうすれば表示されるか調べた。
記事執筆時の環境
Ruby on Rails: 7.0.4
Docker Desktop: 4.15.0
Docker Compose: 3.9
結論
config/environments/development.rb に以下を設定すればよい。
config.web_console.whitelisted_ips = '0.0.0.0/0'
詳しく見てみる
web-console は、デフォルトで 127.0.0.1
しか許可していないらしい。
# IPv4 and IPv6 localhost should be always allowed. ALWAYS_PERMITTED_NETWORKS = %w( 127.0.0.0/8 ::1 )
Docker 環境だと localhost でアクセスしても、Rails から見た IP アドレスは以下のように 192.168.80.1
などとなったりするみたい。
>> request.remote_ip => "192.168.80.1"
アプリケーション用のコンテナに入って Gateway の IP アドレスを確認。
$docker inspect --format='{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}' [CONTAINER ID] 192.168.80.1
上記の IP アドレスは コンテナを作り直すたびに変わるはずなので、開発環境では全ての IP アドレスを許可するように config/environments/development.rb に以下を設定すればよさそう。
config.web_console.whitelisted_ips = '0.0.0.0/0'