2016-08-10 3 views
0

私はこの質問をたくさん尋ねましたが、正解は見つかりませんでした。Herokuファイルストレージからデータを取得するにはどうすればよいですか?ファイルはどこに保存されますか?

データベース接続なしでNodeJSにサンプルアプリケーションを構築しました。私は別のディレクトリにデータを保存しています - "fakeDB"には、 "テスト"、 "質問"、 "ユーザー"ディレクトリなどが含まれています。 「テスト」では、JSONファイルはテストデータ(一連の質問と回答)を表します。

私がHerokuにアプリケーションをデプロイしたとき、テストは正しく保存されました。新しいテストが作成されると、「テスト」ディレクトリに保存され、後でアクセスできます。

しかし、新しいコミットをGHリポジトリにプッシュすると、Herokuで作成されたテストは削除されました。

私のHerokuリポジトリのコピーをローカルマシンで取得するにはどうすればよいですか?

注:私はheroku run bashを実行しました。lsには、リモートからではなくローカルファイルのリストが出力されました。また、私はdirを分離するためにgit pull herokuを実行しましたが、Herokuで作成されなかった私の以前のファイルもありました。

答えて

1

Heroku's filesystem is ephemeral

各ダイノは、最後に展開されたコードの新しいコピーして、独自のはかないファイルシステムを取得します。 dynoの生存期間中、実行中のプロセスはファイルシステムを一時的なスクラッチパッドとして使用できますが、書き込まれたファイルは他のdynoのプロセスには表示されず、書き込まれたファイルはdynoを停止または再起動した時点で破棄されます。たとえば、これは、アプリケーションの展開のためにdynoが交換され、通常のdyno管理の一部として1日に約1回交換されるたびに発生します。

これは、ファイルを確実に作成してローカルファイルシステムに保存することができないことを意味します。彼らはdynosで共有されず、定期的に消えます。さらに、Herokuは、生成されたファイルを簡単に取得するためのメカニズムを提供していません。

アップロード、生成されたファイルなどを格納するためのuse something like Amazon S3への公式の推奨事項です。もちろん、ファイルの内容によっては、データベースがより適しているかもしれません。

+0

ありがとうございます! – Max

関連する問題