Hardcoding IP ke file konfigurasi tidak baik. Bagaimana dengan devs lain? Bagaimana jika ip berubah?
Konfigurasi terkait docker tidak boleh bocor ke aplikasi rel bila memungkinkan. Itu sebabnya Anda harus menggunakan env vars dalam config/environments/development.rb
file:
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
Anda harus menetapkan var dalam .env
file yang benar, tidak dilacak ke kontrol versi.
Dalam docker-compose.yml
Anda dapat menyuntikkan env vars dari file ini dengan env_file
:
app:
build: .
ports:
- "3000:3000"
volumes:
- .:/app
links:
- db
environment:
- DOCKERIZED=true
env_file:
- ".env"
Berdasarkan kartu kredit yang diterima dalam komentar, kami juga dapat membangun solusi tanpa variabel lingkungan:
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
Saya akan meninggalkan solusi dengan env var untuk tujuan pembelajaran.
config/environments/development.rb
, @ydaetskcoR