การเข้ารหัส IP ในไฟล์กำหนดค่าไม่ดี แล้ว devs อื่น ๆ ล่ะ? เกิดอะไรขึ้นถ้า ip เปลี่ยน?
การกำหนดค่าที่เกี่ยวข้องกับนักเทียบท่าไม่ควรรั่วไหลลงในแอพทางรถไฟเมื่อเป็นไปได้ นั่นเป็นเหตุผลที่คุณควรใช้ env vars ในconfig/environments/development.rb
ไฟล์:
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
คุณควรตั้งค่า env vars ที่ถูกต้องใน.env
ไฟล์ไม่ใช่ติดตามในการควบคุมเวอร์ชัน
ในdocker-compose.yml
คุณสามารถฉีด env vars จากไฟล์นี้ด้วยenv_file
:
app:
build: .
ports:
- "3000:3000"
volumes:
- .:/app
links:
- db
environment:
- DOCKERIZED=true
env_file:
- ".env"
ขึ้นอยู่กับ feebdack ที่ได้รับในความคิดเห็นเรายังสามารถสร้างโซลูชันโดยไม่มีตัวแปรสภาพแวดล้อม:
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
ฉันจะออกจากการแก้ปัญหาด้วย env var เพื่อการเรียนรู้
config/environments/development.rb
@ydaetskcoR