Жесткое кодирование IP-адреса в файле конфигурации нехорошо. А как насчет других разработчиков? Что делать, если ip изменится?
Конфигурация, связанная с Docker, по возможности не должна попадать в приложение rails. Вот почему вы должны использовать в config/environments/development.rb
файле env vars :
class Application < Rails::Application
if ENV['DOCKERIZED'] == 'true'
config.web_console.whitelisted_ips = ENV['DOCKER_HOST_IP']
end
end
Вы должны установить правильные переменные env в .env
файле, не отслеживаемые в системе контроля версий.
В docker-compose.yml
вы можете придать окр вары из этого файла с env_file
:
app:
build: .
ports:
- "3000:3000"
volumes:
- .:/app
links:
- db
environment:
- DOCKERIZED=true
env_file:
- ".env"
Основываясь на фибдаке, полученном в комментариях, мы также можем построить решение без переменных окружения:
class Application < Rails::Application
if File.file?('/.dockerenv') == true
host_ip = `/sbin/ip route|awk '/default/ { print $3 }'`.strip
config.web_console.whitelisted_ips << host_ip
end
end
Я оставлю решения с env var в учебных целях.
config/environments/development.rb
, @ydaetskcoR