如何从Heroku文件存储中获取数据?存储文件的位置?

时间:2016-08-10 11:50:04

标签: node.js git bash heroku

我已经搜索了很多这个问题,但我找不到正确答案。

我在没有数据库连接的情况下在NodeJS上构建了一个示例应用程序。开发时我将数据存储在单独的目录中 - " fakeDB",其中包含"测试","问题","用户" dirs等。在"测试"有JSON文件代表测试数据(一组问题和答案)。

当我在Heroku上部署应用程序时,测试存储正确。创建新测试时,它将保存在" tests" dir,我稍后可以访问它。

但是当我将新的提交推送到GH repo时,已经删除了在Heroku中创建的测试。

如何在本地机器上获取我的Heroku仓库的副本?

注意:我已经运行heroku run bash并且在ls上打印了本地文件列表,而不是来自远程文件。另外,我已经运行git pull heroku来分隔目录,但是还有一组我之前没有在Heroku上创建的文件。

1 个答案:

答案 0 :(得分:1)

Heroku's filesystem is ephemeral

  

每个dyno都有自己的短暂文件系统,并带有最近部署代码的全新副本。在dyno的生命周期中,其运行进程可以将文件系统用作临时暂存器,但是任何其他dyno中的进程都不会看到所写的文件,并且在dyno停止或重新启动时,所写的任何文件都将被丢弃。例如,每次因应用程序部署而更换dyno时都会发生这种情况,并且大约每天一次作为正常dyno管理的一部分。

这意味着您无法可靠地创建文件并将其存储在本地文件系统中。它们不会在dynos中共享,它们会定期消失。此外,Heroku不提供轻松检索生成文件的机制。

官方建议use something like Amazon S3用于存储上传,生成的文件等。当然,根据文件中的内容,数据库可能更适合。