我有一个用NodeJS编写的应用程序。 每次我在我的主分支上使用git推送代码时,代码会自动部署在我的服务器上。一切都很好。
但是我的config
文件存在问题,我的本地服务器和远程服务器之间存在差异
要解决此问题,我已排除了git config
文件并将其复制到_config
。
在_config
文件中,我放置了所有配置服务器,当代码部署到服务器时,我自动生成$ cp _config config
以获取良好的配置值。
这个解决方案有效但我想知道它是否是部署我的config
文件的最佳解决方案,以及它是否可以安全地在Bitbucket上使用。
例如,如果我想与某人共享我的存储库,我可以,因为他会看到我的配置。
还有另一种解决方案吗?
如果您有任何建议,请提前致谢。
答案 0 :(得分:1)
你的解决方案运行正常,即使它看起来有点粗糙。
配置通常包含两种类型的数据:
与您的生产机器相比,您的开发机器上的这些类型的配置变量可能不同(dev API URL vs prod API URL; dev API password vs prod API password)。
第二种类型的配置数据可以在您的git存储库中提交,如果您这样做,它可能是最简单的。您可以为dev生成1个文件,为生产生成1个文件,例如,基于环境变量加载正确的文件。
第一种类型 - 密码 - 不应该提交给git。即使你有一个私人存储库也没有。这太危险了。相反,您可以使用您描述的机制,或者您可以将密码放在您在生产环境中设置的环境变量中。
答案 1 :(得分:0)
Hrm,可能不是一个完整的解决方案,而是结帐流程环境变量。
我通常有一个私有的,我添加到gitignore然后我推送样本环境var文件
答案 2 :(得分:0)
在我的项目中,我用三个配置文件解决了这个问题。
默认配置:此配置文件包含默认配置。这种配置应该是安全的,适用于大多数安装。这可能是真实配置文件或具有默认值的源代码的某些部分。此文件已提交给Git存储库。
示例configuraiton文件:此文件看起来像第三个文件,但应用程序不使用它。我通常给它.example
后缀。此文件已提交给Git仓库,但不包含敏感数据。
本地配置文件:具有本地更改的示例副本,如数据库密码或启用调试模式。此文件不已提交给Git repo,并且包含敏感数据。它应该列在您的.gitignore
文件中。
加载此类配置时,我将默认文件与本地文件合并,因此本地文件的内容会覆盖默认值,但如果本地文件中缺少某些内容,则使用默认值。这样我可以拥有最小的本地文件,并且大多数配置都受到开发人员的影响。提交。
当使用框架并且您的应用程序安装到许多客户时,您可能希望拥有更多配置文件。然后您可能有框架配置文件,应用程序配置文件,每客户配置文件和本地配置文件。并且所有文件按此顺序合并在一起,并且仅提交最后一个文件(本地配置)。当然,这涉及更多的存储库,git子模块或类似的东西。