2016-11-07 2 views
1

Использование redis в качестве моего хранилища сеансов в моем приложении express.js. У меня проблемы. Сузили их к проблеме подключения.Переменные среды Docker, dokku-redis

Как получить доступ к переменной среды docker из приложения express.js? Я использую докку-redis.

Сообщается, что переменные окружения автоматически настраиваются в связанном приложении ... Я связал свое приложение. running dokku redis: info foo показывает, что все связано. Я пытаюсь тянуть в REDIS_URL

Спасибо, Роб

https://github.com/dokku/dokku-redis

------------ 
a redis service can be linked to a 
container this will use native docker 
links via the docker-options plugin 
here we link it to our 'playground' app 
NOTE: this will restart your app 
dokku redis:link lolipop playground 

the following environment variables will be set automatically by docker (not on the app itself, so they won’t be listed when calling dokku config) 

    DOKKU_REDIS_LOLIPOP_NAME=/lolipop/DATABASE 
    DOKKU_REDIS_LOLIPOP_PORT=tcp://172.17.0.1:6379 
    DOKKU_REDIS_LOLIPOP_PORT_6379_TCP=tcp://172.17.0.1:6379 
    DOKKU_REDIS_LOLIPOP_PORT_6379_TCP_PROTO=tcp 
    DOKKU_REDIS_LOLIPOP_PORT_6379_TCP_PORT=6379 
    DOKKU_REDIS_LOLIPOP_PORT_6379_TCP_ADDR=172.17.0.1 

and the following will be set on the linked application by default 

REDIS_URL=redis://lolipop:[email protected]:6379 

NOTE: the host exposed here only works internally in docker containers. If 
you want your container to be reachable from outside, you should use 'expose'. 

------------------------------ 

Edit - извините, я забыл добавить, что я попытался process.env

+0

process.env - ваш друг – GottZ

ответ

1

Как вы связать Redis услугу с вашим приложением? Вы не можете просто сделать dokku config:set, и если вы это сделали, вы должны отменить его, а затем использовать dokku redis:link. Как только вы это сделаете, перестройте свое приложение, используя dokku ps:rebuild APP, и вы должны получить process.env.REDIS_URL набор.

+0

Привет, Jose, спасибо. Я запустил команду связи ... это было первое, что я сделал. Выполнение dokku redis: info dbname, он ботирует ссылку. Поэтому я попытался отключить его, чтобы начать все заново, и получить нагрузку на отказ от ошибок. Попробует отключить мое приложение, а затем посмотрю, смогу ли я отменить связь и связать db снова. – Rob

+0

Итак, я все выбрал .... восстановил сервер. Развернутый докку и снова установил плагин. Все работает. – Rob

1

вы можете получить доступ к окружающей среде переменные до process.env примерно:

console.log(process.env["DOKKU_REDIS_LOLIPOP_NAME"]); 
console.log(process.env["DOKKU_REDIS_LOLIPOP_PORT"]); 
console.log(process.env["REDIS_URL"]); 

также до тех пор, как ключи в объектах, не вредят соглашения об именах переменных вы можете получить доступ к ним, как это тоже:

console.log(process.env.REDIS_URL); 

подробнее относительно переменным JavaScript правил присвоения имен: What characters are valid for JavaScript variable names?

+0

извините - я должен был упомянуть в своем вопросе, что я это пробовал. Я также вышла из процесса process.env, и ничего из dokku или redis не появилось .... Так что это должна быть проблема в моей конфигурации – Rob