Docker 环境变量,dokku-redis

Docker environment variables, dokku-redis

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

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

它报告说环境变量是在链接的应用程序上自动设置的...我已经链接了我的应用程序。 运行 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

您可以通过 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?

您如何 link 使用您的应用程序使用 redis 服务?你不能简单地做 dokku config:set,如果你做了,你应该取消设置,然后改用 dokku redis:link。完成后,使用 dokku ps:rebuild APP 重建您的应用程序,您应该设置 process.env.REDIS_URL