2015-02-09 49 views
-1

我正在使用Heroku免費託管解決方案的Facebook應用程序。當我啓動我的應用程序時,一切正常。但是,當我使用下面的命令,我如何克隆我使用的測功機上的文件系統?

的Heroku的git克隆應用:克隆-a塗鴉嘉豪

我得到的一切,我把我的服務器的文件。但我也想要我的php/flash應用程序創建的文件。有一堆圖像文件被寫入到文件系統,並且那個heroku git:clone -a graffiti-galore命令,它不會引入文件系統中的新文件。我知道他們在文件系統上,但我不知道如何檢索它們。

請有人嗎?

+0

您只克隆了git系統中的文件,這意味着您需要將這些新添加的文件添加/提交給git,或者您必須自己複製它們(ftp或smth)。 – 2015-02-09 07:50:39

+0

如果他們不在git repo中,那些文件如何到達那裏? – 2015-02-09 07:56:35

+0

正在運行的網絡應用程序(php/flash)正在生成文件。他希望他們回到當地.. – 2015-02-09 08:01:30

回答

1

這是故意不可能的,違反了Twelve-Factor architecture的原理以及一些Heroku約束條件,如ephemeral filesystem

想象一下,您正在執行git push,並且您的服務器同時也更改了您要更改的文件,導致無法在您手動干預下無法解決的衝突。

想象一下,如果您從一臺測功機擴展到20臺測功機,會發生什麼情況。負載均衡器隨機將請求發送到其中一個後端。一些圖片上傳最終在dyno 1上,一些在dyno 2上,一些在dyno 3上等等。你想如何跨所有實例同步數據?如果關閉具有非同步數據的打印機會發生什麼情況?碰撞發生了什麼?當啓動100個其他dynos時,100 GB的存儲上傳會發生什麼?這就是爲什麼你不能也不應該在本地文件系統上存儲持久數據(比如用戶上傳)的原因;您需要使用專用的外部存儲。有一篇關於上傳到S3 here的專門文章,如果您正確設置了CORS的詳細信息,也可以從Flash應用程序直接上傳到S3。

你也可能沒有意識到,一個heroku ps:restartheroku ps:scale和運行大約每24小時會,就像一個git push heroku,導致你DYNOS重新啓動,這意味着在本地文件系統中的所有修改都將丟失的自動性。

+0

好的謝謝你的信息,我現在明白了。 lolz – 2015-02-26 18:09:41

+0

那麼......你能接受(並且upvote)答案嗎? – dzuelke 2015-02-26 22:06:06

相關問題