json - 需要 Firebase JSON 的 Django 应用程序的 Heroku 配置?
问题描述
我在 Heroku 上部署了一个 Python Django 应用程序,它通过drf-firebase-auth 库使用 Firebase (出于多种原因,我必须使用它)。我知道不应将配置检查到版本控制中,但我不确定在我的情况下如何避免它。drf-firebase-auth 库需要将 Firebase 凭据 JSON 文件保存在我的代码的目录结构中。如何基本上通过 Heroku 环境变量传递此 JSON,而无需将 JSON 文件提交到我的 git 存储库(并推送到 Heroku),以便我可以为暂存/生产/等进行适当的配置设置?
drf-firebase-auth 库指示我将其添加到我settings.py
的并将我非常敏感firebase.json
的文件保存到我的代码库中:
DRF_FIREBASE_AUTH = {
'FIREBASE_SERVICE_ACCOUNT_KEY': 'project/config/firebase.json'
}
这个第 3 方库中的实现看起来有点像这样:
import firebase_admin
from drf_firebase_auth.settings import api_settings
...
firebase_credentials = firebase_admin.credentials.Certificate(
api_settings.FIREBASE_SERVICE_ACCOUNT_KEY
)
firebase = firebase_admin.initialize_app(firebase_credentials)
...
问题是我想避免将此 Firebase JSON 提交到 git 以部署到 Heroku。
解决方案
可以在您的服务器上拥有一个需要手动修改一次的文件,就像您的环境变量一样。解决这个问题的一种方法是
firebase.json
向您的 git添加(并提交)一个虚拟对象(编辑或更改机密)- 将更新的提交拉到您的服务器并手动修改/用
firebase.json
实际的虚拟替换
由于 json 是一个配置文件并且几个月都不会更改,因此您可以简单地忽略服务器上的本地更改(并确保您不会意外地存储/清除它)。这样,您就可以确保每个人都拥有配置文件(本地、登台和生产),但您需要根据所需的访问级别/环境进行更改。
推荐阅读
- c++ - 浮点是否使用哈希表中的键?
- css - Angular如何设置导航栏固定?
- android - 包含布局的android绑定值失败,
- flutter - 数组中的颜色
- c++ - 生成唯一 ID C++
- vb.net - 如何隐藏公共财产而不将其设为私有或删除它
- angularjs - Kepler.gl 可以与 Angular.js 一起使用吗?
- python - Flask:无法获取值 request.method
- express - 如何正确上传来自CKEditor5的express-fileupload图像?
- intellij-idea - Intellij 索引整个文件系统 - 如何停止它?