首页 > 解决方案 > 部署后如何在 Heroku 中维护不在 git repo 中的文件

问题描述

这是场景:我的 Node.js 应用程序在服务器上创建一个文件,该文件将所有用户数据(不敏感)存储在一个名为database.json.

我目前有两个环境:

每次我将应用程序的新版本从我的机器推送到生产环境时,我都不想用我机器中的文件替换生产database.json文件。为此,我使用.gitignore忽略此文件,因此此文件不在GitHub 上,因为它是在应用程序执行中创建的

但是每次我向 Heroku 推送新版本时database.json,Heroku 都会删除旧文件,而不是保留旧文件。看起来 Heroku 用从 Git 下载的文件夹完全覆盖了所有 app 文件夹,而不是与已经存在的文件夹“合并”。

如何在 Heroku 上设置一个文件,用于保存不受git pushes 和 deploys影响的用户数据?

标签: node.jsgitheroku

解决方案


如何在 Heroku 上设置一个文件,用于保存不受git pushes 和 deploys影响的用户数据?

你不能。

此外,这不仅仅是部署:您的文件在其他时候也会丢失。

您的文件没有被Git覆盖;Heroku 的文件系统是短暂的。任何对它所做的更改都将在测功机重新启动时丢失。无论您是否部署,这种情况都会经常发生(至少每天一次)。

您将需要更改持久化数据的方式。我建议使用真正的客户端-服务器数据库,但您也可以使用 Amazon S3或Azure Blob Storage之类的东西将文件保存在第三方对象存储中


推荐阅读