Docker环境variables,dokku-redis

在我的express.js应用程序中使用redis作为我的会话存储。 我有问题。 缩小到连接问题。

如何从express.js应用程序中访问docker环境variables? 我正在使用dokku-redis。

它报告环境variables是自动设置在链接的应用程序…我已经链接了我的应用程序。 运行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:SOME_PASSWORD@dokku-redis-lolipop: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'. ------------------------------ 

编辑 – 对不起,我忘了添加,我已经尝试process.env

你是如何将redis服务与你的应用程序联系起来的? 你不能简单地做dokku config:set ,如果你这样做,你应该取消它,然后使用dokku redis:link 。 一旦你这样做,重build你的应用程序使用dokku ps:rebuild APP ,你应该得到process.env.REDIS_URL设置。

你可以像下面这样通过process.env来访问环境variables:

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

只要键中的对象不会损害variables命名约定,您也可以像这样访问它们:

 console.log(process.env.REDIS_URL); 

有关JavaScriptvariables命名规则的更多信息: 哪些字符对JavaScriptvariables名称有效?