Не удается загрузить изображения, загруженные пользователями с дугой на Prod на Heroku - PullRequest
0 голосов
/ 03 апреля 2019

Я использую дугу для сохранения пользовательских загрузок и добавления в БД. На localhost все работает нормально с (в lib/app_web/endpoint.ex)

plug Plug.Static,
    at: "/uploads", from: Path.expand("./uploads"), gzip: false

Я не могу понять, где я могу сохранить загрузки на heroku, чтобы я мог получить к ним доступ с помощью https://app.herokuapp.com/uploads/images/...

1 Ответ

0 голосов
/ 03 апреля 2019

Особенность загрузки файлов непосредственно в Heroku заключается в том, что они удаляются каждый раз, когда ваш динамо останавливается / перезапускается.Поэтому вам нужно хранить эти файлы вне приложения Heroku.Одним из решений является использование AWS S3 (это довольно дешево, если у вас мало данных, например полдоллара в месяц, если вы храните 20 ГБ и у вас 100 ГБ трафика).

На страницах справки Heroku :

Файловая система Heroku эфемерна - это означает, что любые изменения в файловой системе, пока dyno работает только в последний раз, пока этот dyno не будет выключен или перезапущен,Каждый dyno загружается с чистой копией файловой системы с самого последнего развертывания.Это похоже на то, как много контейнерных систем, таких как Docker, работают.

Кроме того, при нормальных операциях dynos будет перезапускаться каждый день в процессе, известном как «Цикл».

Эти двафакты означают, что файловая система на Heroku не подходит для постоянного хранения данных.В случаях, когда вам необходимо хранить данные, мы рекомендуем использовать надстройку базы данных, такую ​​как Postgres (для данных) или выделенную службу хранения файлов, такую ​​как AWS S3 (для статических файлов).Если вы не хотите настраивать учетную запись в AWS для создания корзины S3, у нас также есть дополнения, которые управляют хранением и обработкой статических активов https://elements.heroku.com/addons

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...