Docker Node.js environment variables
我试图在on命令上使用仅在docker上使用的环境变量。 在Mac / Linux上,我可以简单地运行
编辑我的愚蠢造成的!
您不能在现有docker上使用docker设置新的环境变量。
在构建它(使用Dockerfile或docker-compose)或运行它(使用
我不使用节点环境,
我建议您执行以下操作:
创建配置文件夹
把它放在config / index.js
1 2 3 4 5 6 7 8 9 10 | 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 / config.json(配置模板)和config / config.local.json(具有实际配置的模板副本)
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | { "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对象:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | var config = require('./config'), cluster = require('./components/cluster'), http = require('http'), ... ... https = require('https'); cluster.start(function() { if (config.get('app:http:enabled')) { var httpServer = http.createServer(app); httpServer.listen(config.get('app:http:port'), config.get('app:http:host'), function () { winston.info('App listening at http://%s:%s', config.get('app:http:host'), config.get('app:http:port')); }); } if (config.get('app:https:enabled')) { var httpsServer = https.createServer({ key: fs.readFileSync(path.join(__dirname, 'certificates', config.get('app:https:certificate:key'))), cert: fs.readFileSync(path.join(__dirname, 'certificates', config.get('app:https:certificate:cert'))) }, app); httpsServer.listen(config.get('app:https:port'), config.get('app:https:host'), function () { winston.info('App listening at https://%s:%s', config.get('app:https:host'), config.get('app:https:port')); }); } }); |
此示例是具有基于环境的配置的更准确方法。例如:config.local.json配置,它将添加到.gitignore中,依此类推...
即使您只需要从命令(在
这样的caser并不罕见(
使用
然后在代码中:
1 2 3 | const argv = require('yargs').argv; ... let boo = do.something(argv.token); |