部署后如何在 Heroku 中维护不在 git repo 中的文件
Posted
技术标签:
【中文标题】部署后如何在 Heroku 中维护不在 git repo 中的文件【英文标题】:How to mantain files in Heroku that are not in git repo after a deploy 【发布时间】:2020-12-06 23:43:54 【问题描述】:这是场景:我的 Node.js 应用程序在服务器上创建了一个文件,该文件将所有用户数据(不敏感)存储在一个名为 database.json
的文件中。
我目前有两个环境:
我的本地机器,带有database.json
,
和我在 Heroku 上的生产环境,有自己的database.json
每次我将应用程序的新版本从我的机器推送到生产环境时,我不希望将生产环境的database.json
文件替换为我机器中的文件。为此,我使用.gitignore
忽略了这个文件,所以这个文件在 GitHub 上不是,因为它是在应用程序执行过程中创建的
但是每次我向 Heroku 推送新版本时,Heroku 都会删除它,而不是保留旧的 database.json
文件。看起来 Heroku 用从 Git 下载的文件夹完全覆盖了所有 app 文件夹,而不是与已经存在的文件夹“合并”。
如何在 Heroku 上设置一个文件,用于保存不受git push
es 影响并部署的用户数据?
【问题讨论】:
部署脚本中可能有一些配置在部署时创建文件databse.json 问题是我不想在部署时创建一个新文件,我想保留已经存在但不在 git repo 中的文件 你能检查一下 .gitignore 文件并确保该文件在其中列出 【参考方案1】:如何在 Heroku 上设置一个文件,用于保存不受
git push
es 影响并部署的用户数据?
你不能。
此外,这不仅仅是部署:您的文件在其他时间也会丢失。
您的文件没有被 Git 覆盖; Heroku 的filesystem is ephemeral。任何对它所做的更改都将在测功机重新启动时丢失。无论您是否部署,此happens frequently(每天至少一次)。
您需要更改持久化数据的方式。我建议使用real client-server database,但您也可以将文件保存在third-party object storage using something like Amazon S3 或Azure Blob Storage。
【讨论】:
以上是关于部署后如何在 Heroku 中维护不在 git repo 中的文件的主要内容,如果未能解决你的问题,请参考以下文章