node.js - 部署后如何在 Heroku 中维护不在 git repo 中的文件
问题描述
这是场景:我的 Node.js 应用程序在服务器上创建一个文件,该文件将所有用户数据(不敏感)存储在一个名为database.json
.
我目前有两个环境:
- 我的本地机器,带有
database.json
, - 和我在 Heroku 上的生产环境,有自己的
database.json
每次我将应用程序的新版本从我的机器推送到生产环境时,我都不想用我机器中的文件替换生产database.json
文件。为此,我使用.gitignore
忽略此文件,因此此文件不在GitHub 上,因为它是在应用程序执行中创建的
但是每次我向 Heroku 推送新版本时database.json
,Heroku 都会删除旧文件,而不是保留旧文件。看起来 Heroku 用从 Git 下载的文件夹完全覆盖了所有 app 文件夹,而不是与已经存在的文件夹“合并”。
如何在 Heroku 上设置一个文件,用于保存不受git push
es 和 deploys影响的用户数据?
解决方案
如何在 Heroku 上设置一个文件,用于保存不受
git push
es 和 deploys影响的用户数据?
你不能。
此外,这不仅仅是部署:您的文件在其他时候也会丢失。
您的文件没有被Git覆盖;Heroku 的文件系统是短暂的。任何对它所做的更改都将在测功机重新启动时丢失。无论您是否部署,这种情况都会经常发生(至少每天一次)。
您将需要更改持久化数据的方式。我建议使用真正的客户端-服务器数据库,但您也可以使用 Amazon S3或Azure Blob Storage之类的东西将文件保存在第三方对象存储中。
推荐阅读
- javascript - 将图形点绘制为实时流:Highcharts
- encryption - 颤振:错误:类型“字符串”不是“加密”类型的“加密”类型的子类型
- javascript - 将 javascript 变量保存到文件中
- c# - 如何用输入字符串替换和匹配特定字符串
- apache - Apache ReverseProxy 域 A 子目录到域 B 根目录
- react-native - 为什么在 ios [调试] 上使用 react-native-navigation 加载 index.js 两次
- php - symfony 控制器必须返回一个响应(给定 null)
- aws-lambda - “有更新版本的 AWS SAM CLI 可用!” 在 Cloud9 IDE 中本地运行 Lambda 函数时出错
- java - 如何修复错误:非静态变量 this 不能从 Horse d = new Horse () 附近的静态上下文中引用;
- php - 如何在 Laravel 或 Php 中手动增加获取的数据值?