将Docker ENV变量传递给rails app

时间:2016-01-10 19:02:16

标签: bash mongodb ruby-on-rails-4 docker environment-variables

我正在使用docker容器测试rails应用程序。我想要做的是使用-e标志在运行时传递docker run -p 3000:3000 -d -e "DOCKER_HOST=$(ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+')" somerepo/image:tag变量,如下所示:  env。我知道这是有效的,因为当我进入容器并运行$ env HOSTNAME=1641e2f6c81f GEM_HOME=/usr/local/bundle DOCKER_HOST=172.17.0.1 ... 时,我得到了正确的变量集:

mongoid.yml

当我尝试在rails app中的production: clients: default: database: somerailsdb hosts: - ${DOCKER_HOST}:27017 options: options: 中设置它时,如下所示:

App 10040 stdout: D, [2016-01-10T11:40:07.085516 #10040] DEBUG -- : MONGODB | getaddrinfo: Name or service not known

当我尝试获取数据库记录时,我收到以下mongodb错误:

mongoid.yml

这告诉我该值未在应用中设置。如何在{{1}}配置文件中正确传递?

1 个答案:

答案 0 :(得分:3)

mongoid.yml中使用环境变量值的语法是:

production:
  clients:
    default:
      database: somerailsdb
      hosts:
        - <%= ENV['DOCKER_HOST'] %>:27017
      options:
  options: