2016-08-10 125 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