這是故意不可能的,違反了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:restart
,heroku ps:scale
和運行大約每24小時會,就像一個git push heroku
,導致你DYNOS重新啓動,這意味着在本地文件系統中的所有修改都將丟失的自動性。
您只克隆了git系統中的文件,這意味着您需要將這些新添加的文件添加/提交給git,或者您必須自己複製它們(ftp或smth)。 – 2015-02-09 07:50:39
如果他們不在git repo中,那些文件如何到達那裏? – 2015-02-09 07:56:35
正在運行的網絡應用程序(php/flash)正在生成文件。他希望他們回到當地.. – 2015-02-09 08:01:30