我正在尝试仅在on命令上使用docker上的环境变量。在Mac / Linux上我可以简单地运行service:
并且令牌可用作环境变量。但是当我使用docker token=1234 node command.js
执行此操作时,我得到docker exec $CONTAINER nenv token=123 node command.js
答案 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 run
或docker exec
运行代码:
docker exec $CONTAINER node command.j --token 123
然后在代码中:
const argv = require('yargs').argv;
...
let boo = do.something(argv.token);