我正在使用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}}配置文件中正确传递?
答案 0 :(得分:3)
在mongoid.yml
中使用环境变量值的语法是:
production:
clients:
default:
database: somerailsdb
hosts:
- <%= ENV['DOCKER_HOST'] %>:27017
options:
options: