我使用Heroku为facebook应用程序提供免费托管解决方案。当我启动我的应用程序一切正常。但是当我使用以下命令克隆应用程序时,
heroku git:clone -a graffiti-galore
我收到了我放到服务器上的所有文件。但我也想要我的php / flash应用程序创建的文件。有一堆图像文件被写入文件系统,并且heroku git:clone -a graffiti-galore命令,它不会引入文件系统上的新文件。我知道他们在文件系统上,但我不知道如何检索它们。
请有人吗?
答案 0 :(得分:1)
这是故意不可能的,违反了Twelve-Factor architecture的原则以及ephemeral filesystem等几个Heroku约束。
想象一下,您正在进行git push
,同时您的服务器也更改了您正在推送更改的文件,从而导致无法通过人工干预无法解决的冲突。 / p>
或者想象如果你从一个dyno缩放到20个dynos会发生什么。负载均衡器随机向其中一个后端发送请求。一些图像上传最终在dyno 1上,一些在dyno 2上,一些在dyno 3上,依此类推。您希望所有实例中的数据同步吗?如果关闭一个具有非同步数据的情况会发生什么?崩溃会发生什么?当您启动100个其他dynos时,100 GB存储的上传会发生什么?这就是为什么你不能也不应该在本地文件系统上存储持久性数据(例如用户上传);你需要使用专用的外部存储。有关上传到here的专门文章,如果您正确设置了CORS详细信息,也可以从Flash应用中直接上传到S3。
您可能也没有意识到heroku ps:restart
,heroku ps:scale
和大约每24小时运行一次的自动操作会像git push heroku
那样导致您的dynos重新启动,这意味着所有本地文件系统中的更改将丢失。