Docker Node.js环境变量

时间:2016-04-05 13:05:35

标签: node.js docker

我正在尝试仅在on命令上使用docker上的环境变量。在Mac / Linux上我可以简单地运行service:并且令牌可用作环境变量。但是当我使用docker token=1234 node command.js执行此操作时,我得到docker exec $CONTAINER nenv token=123 node command.js

3 个答案:

答案 0 :(得分:1)

我没有使用节点env, 我建议做以下事项:

创建配置文件夹

将此内容放在 config / index.js

Content-Type

创建文件: config / config.json (配置模板)和 config / config.local.json (带有实际配置的模板副本)

例如:

$.param( .. )

在您应用的开头使用:var nconf = require('nconf'), path = require('path'); nconf.env().argv(); nconf.file('local', path.join(__dirname, 'config.local.json')); nconf.file(path.join(__dirname, 'config.json')); module.exports = nconf;

并在需要时使用 config 对象:

{
  "app": {
    "useCluster": false,
    "http": {
      "enabled": true,
      "port": 8000,
      "host": "0.0.0.0"
    },
    "https": {
      "enabled": false,
      "port": 443,
      "host": "0.0.0.0",
      "certificate": {
        "key": "server.key",
        "cert": "server.crt"
      }
    },
    "env": "production",
    "profiler": false
  },
  "db": {
    "driver": "mysql",
    "host": "address here",
    "port": 3306,
    "user": "username here",
    "pass": "password here",
    "name": "database name here"
  },
}

这个例子是更准确的基于环境的配置方式。例如: config.local.json 配置将添加到 .gitignore 等等......

答案 1 :(得分:1)

由我的愚蠢引起的编辑!

您无法在现有docker上使用docker设置新的env var。 您必须在构建它时(使用Dockerfile或docker-compose)或运行它(使用docker run $CONTAINER -e "name=value" command)时执行此操作。

答案 2 :(得分:0)

即使您只需要从命令中检索某些配置(在docker run时间),您只需从节点env(process.env)切换到argv使用即可。 这种案例并不罕见(docker-compose),并且可以非常简单地完成。

npm install yargs --save

使用docker rundocker exec运行代码:

docker exec $CONTAINER node command.j --token 123

然后在代码中:

const argv = require('yargs').argv;
...
let boo = do.something(argv.token);