2016-08-10 126 views
0

我已经GOOGLE了很多这个问题,但我还没有找到正确的答案。如何从Heroku文件存储中获取数据?文件存储在哪里?

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

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

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

如何在本地机器上获得我的Heroku回购副本?

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

回答

1

Heroku's filesystem is ephemeral

每个赛道都有自己的文件系统短暂的,与最近部署的代码的新副本。在dyno的整个生命周期中,它的运行进程可以使用文件系统作为临时暂存器,但是任何其他dyno中的进程都不可见任何写入的文件,并且在dyno停止或重新启动时,任何写入的文件都将被丢弃。例如,任何时候由于应用程序部署而将替代品替换,并且每天大约一次作为正常动态管理的一部分就会发生这种情况。

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

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

+0

非常感谢! – Max