Codificar una IP en un archivo de configuración no es bueno. ¿Qué hay de otros desarrolladores? ¿Qué pasa si la ip cambia?
La configuración relacionada con Docker no debe filtrarse en la aplicación rails siempre que sea posible. Es por eso que debe usar env vars en el config/environments/development.rb
archivo:
class Application < Rails::Application
# Check if we use Docker to allow docker ip through web-console
if ENV['DOCKERIZED'] == 'true'
config.web_console.whitelisted_ips = ENV['DOCKER_HOST_IP']
end
end
Debe configurar los valores correctos de env en un .env
archivo, sin seguimiento en el control de versiones.
En docker-compose.yml
usted puede inyectar env vars de este archivo con env_file
:
app:
build: .
ports:
- "3000:3000"
volumes:
- .:/app
links:
- db
environment:
- DOCKERIZED=true
env_file:
- ".env"
Según el feebdack recibido en los comentarios, también podemos construir una solución sin variables de entorno:
class Application < Rails::Application
# Check if we use Docker to allow docker ip through web-console
if File.file?('/.dockerenv') == true
host_ip = `/sbin/ip route|awk '/default/ { print $3 }'`.strip
config.web_console.whitelisted_ips << host_ip
end
end
Dejaré las soluciones con env var para fines de aprendizaje.
config/environments/development.rb
, @ydaetskcoR