ヨージとプログラミング

プログラミング勉強の記録

【heroku】heroku環境では画像は必ずS3に保存しよう

herokuには画像を保存しておけない

しりませんでした。
Instagramのクローンアプリをherokuにデプロイした後、seedデータ(ユーザー、画像)を投入。ルートページにアクセスして確認する、うまくいってるなニッコリ
翌日、ルートページを確認すると画像が表示されなくなってる。みんな経験あるはず
これにはheroku特有の事情があります。 herokuは1日に最低1回、Dynoの再起動があるようです。
Dynoってなんだ?って思って調べると。。。そもそもherokuの実体ってEC2のようでして、そのEC2上で起動しているコンテナがDynoらしい
そのコンテナが再起動し、その時local filesystemがリセットされると公式にも書かれております

f:id:yoji4910:20200201161206p:plain

Dynos and the Dyno Manager | Heroku Dev Center

アプリ自体は消えてしまわないのー?って思うかもしれませんが、git pushに含まれる分は消えないようです。
多分ですけど、herokuのリポジトリから再起動ごとにpullしてくれてるんでしょう。
ただ、ユーザーデータ、リレーションデータ等のseedは残りますね。なんでだろう、間違った理解をしているのかなぁ

S3(外部ストレージ)を使おう

S3じゃなくてもいいけど。自分へのリマインダーです。