0

Я тестирую приложение для рельсов, используя контейнер для докеров. То, что я пытаюсь сделать, это передать переменную ENV при запуске, используя флаг -e: docker run -p 3000:3000 -d -e "DOCKER_HOST=$(ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+')" somerepo/image:tag. Это работает, я знаю, потому что, когда я колотить в контейнер и запустить env я получаю правильный набор переменных:Pass Docker ENV variable to rails app

$ env 
HOSTNAME=1641e2f6c81f 
GEM_HOME=/usr/local/bundle 
DOCKER_HOST=172.17.0.1 
... 

Когда я пытаюсь установить это в 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?

ответ

2

Синтаксис использовать переменные окружения значения в mongoid.yml является:

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

Спасибо !!! Я не могу поверить, что забыл этот Дух! – Awatatah