IPを構成ファイルにハードコーディングするのはよくありません。他の開発者はどうですか?IPが変更された場合はどうなりますか?
Docker関連の構成は、可能な限りRailsアプリにリークしないようにする必要があります。そのため、config/environments/development.rb
ファイルでenv varsを使用する必要があります。
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
バージョン管理では追跡されずファイルにます。
ではdocker-compose.yml
あなたはenvを噴射することができることと、このファイルからvarsはenv_file
:
app:
build: .
ports:
- "3000:3000"
volumes:
- .:/app
links:
- db
environment:
- DOCKERIZED=true
env_file:
- ".env"
コメントで受け取った料金に基づいて、環境変数なしでソリューションを構築することもできます。
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を