我们目前在nodejs中使用'nconf'npm模块来使用单个json配置文件来处理特定于环境的配置。然后将此配置检入git存储库并由应用程序使用。但是,随着应用程序的增长,我们发现配置文件现在具有机密凭据信息。我想找出每个环境处理这些凭据配置的好方法。我在许多论坛中读到,这些论坛在启动节点服务器时提供这些凭据作为环境运行时参数,而不是将它们存储在源存储库中。如果您手动启动服务器,这很好,但我们正计划进行dockerized自动化容器部署。在这种情况下,我们必须在某处存储凭证配置,因此寻找有关处理这种情况的良好策略的建议。
答案 0 :(得分:0)
我认为这取决于您使用的基础设施。例如,如果你使用heroku,你可以在那里设置ENV_VARS就可以了。 如果您以管理员身份拥有服务器,则可以设置这些变量,并且只知道谁有权访问该服务器。
答案 1 :(得分:0)
我已经使用Heroku和.env节点库做了类似的事情。
如果找到服务器从.env文件启动,则此库会推送一组环境变量。
仅在本地环境中创建.env文件,并将其设置在.gitignore文件中,以免上传到您的遥控器。
您的 .env 文件如下所示:
AMAZON_CLIENT_ID=ABCDEFG
AMAZON_CLIENT_SECRET=CATDOGCOW
我喜欢将所有配置变量或常量放在一个文件中,这样我就可以找到它们,而不是在代码中广泛使用。
所以我创建了一个名为 config.js 的文件,看起来像这样
require('dotenv').config({silent: true});
module.exports = {
AMAZON_CLIENT_ID:process.env.AMAZON_CLIENT_ID,
AMAZON_CLIENT_SECRET:process.env.AMAZON_CLIENT_SECRET,
}
至少在Heroku中,我可以在Heroku网站上手动设置所有这些环境变量,我认为你可以在Docker中做类似的事情。
然后在代码中的任何位置使用它,如:
var config = require('./config');
//some random code
if(req.query.amzclientid == config.AMAZON_CLIENT_ID)
我知道它不是Docker,但是如果你有兴趣了解更多上述内容,我写了一篇关于它的tutorial。