将 Docker ENV 变量传递给 rails 应用程序
Pass Docker ENV variable to rails app
我正在使用 docker 容器测试 rails 应用程序。我想要做的是使用 -e
标志在 运行 处传递一个 ENV
变量,如下所示:
docker run -p 3000:3000 -d -e "DOCKER_HOST=$(ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+')" somerepo/image:tag
。我知道这是有效的,因为当我 bash 进入容器并且 运行 env
我得到正确的变量集:
$ env
HOSTNAME=1641e2f6c81f
GEM_HOME=/usr/local/bundle
DOCKER_HOST=172.17.0.1
...
当我尝试在 rails 应用程序的 mongoid.yml
中设置时,如下所示:
production:
clients:
default:
database: somerailsdb
hosts:
- ${DOCKER_HOST}:27017
options:
options:
我在尝试获取数据库记录时遇到以下 mongodb 错误:
App 10040 stdout: D, [2016-01-10T11:40:07.085516 #10040] DEBUG -- : MONGODB | getaddrinfo: Name or service not known
这告诉我没有在应用程序中设置该值。如何在 mongoid.yml
配置文件中正确传递它?
在 mongoid.yml
中使用环境变量值的语法是:
production:
clients:
default:
database: somerailsdb
hosts:
- <%= ENV['DOCKER_HOST'] %>:27017
options:
options:
我正在使用 docker 容器测试 rails 应用程序。我想要做的是使用 -e
标志在 运行 处传递一个 ENV
变量,如下所示:
docker run -p 3000:3000 -d -e "DOCKER_HOST=$(ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+')" somerepo/image:tag
。我知道这是有效的,因为当我 bash 进入容器并且 运行 env
我得到正确的变量集:
$ env
HOSTNAME=1641e2f6c81f
GEM_HOME=/usr/local/bundle
DOCKER_HOST=172.17.0.1
...
当我尝试在 rails 应用程序的 mongoid.yml
中设置时,如下所示:
production:
clients:
default:
database: somerailsdb
hosts:
- ${DOCKER_HOST}:27017
options:
options:
我在尝试获取数据库记录时遇到以下 mongodb 错误:
App 10040 stdout: D, [2016-01-10T11:40:07.085516 #10040] DEBUG -- : MONGODB | getaddrinfo: Name or service not known
这告诉我没有在应用程序中设置该值。如何在 mongoid.yml
配置文件中正确传递它?
在 mongoid.yml
中使用环境变量值的语法是:
production:
clients:
default:
database: somerailsdb
hosts:
- <%= ENV['DOCKER_HOST'] %>:27017
options:
options: