【问题标题】:Rails: Use environment variables defined with Figaro in DockerRails:在 Docker 中使用 Figaro 定义的环境变量
【发布时间】:2019-01-15 22:19:45
【问题描述】:
如果我没记错的话,似乎用 Figaro 定义的变量在 Docker 容器中不可用。
我有 env 文件来配置 Postgresq DB:
POSTGRES_USER=ENV['db_user']
POSTGRES_PASSWORD=ENV['db_password]
POSTGRES_DB=ENV['db_name']
我已将 application.yml 文件与所有其他 Rails 应用程序文件一起复制到容器中(我可以在容器外壳中使用 ls 检查它)。
这是正常行为吗?
【问题讨论】:
标签:
ruby-on-rails
docker
figaro-ruby
【解决方案1】:
我在使用 Rails 应用程序时也遇到过这个问题。
这里要注意的是,对于 Docker,环境变量放在.env 文件或env_file (my_variables.env) 中。放置在 .yml 或 .yaml 文件 (application.yml) 中的环境文件在运行时通常不会被 Docker 识别。这是 Docker 官方文档的链接,进一步解释了它:The “.env” file
此类环境变量的一个示例是 数据库连接字符串,它们在应用程序启动过程中是必需的,例如:
database_name
database_username
database_password
但是,您仍然可以使用 Figaro gem 来定义应用程序启动期间不需要的变量,例如:
RAILS_MASTER_KEY
就是这样。
我希望这会有所帮助