Статические файлы Django на Heroku Dyno

#django #amazon-web-services #heroku #static-files

#django #amazon-веб-сервисы #heroku #статические файлы

Вопрос:

Я запускаю приложение django на Heroku и в настоящее время использую AWS S3 для обслуживания своих статических файлов. Мы храним наши статические файлы как в статических папках для каждого приложения, так и в static/ папке в корне каталога. Размер static/ корневой папки составляет около 40 МБ.

Всякий раз, когда мы развертываем наше приложение в Heroku, статические файлы включаются в Heroku slug, так что heroku run python manage.py collectstatic --no-input их можно запускать из самого Dyno, который затем копирует любые измененные / новые статические файлы в нашу корзину S3, чтобы их можно было обслуживать.

Проблема в том, что после того, как мы пройдем этот процесс, у нас теперь есть static/ папка на Dyno, которая занимает около 40 МБ места и, по-видимому, бесполезна, поскольку наши файлы отправляются из нашего хранилища S3!

Есть ли лучший способ развернуть наше приложение и собрать наши статические файлы в нашу корзину S3, но не копировать статические файлы в Heroku?

Один из способов, о котором я думал, — добавить все статические файлы в Heroku.создайте файл slugignore, а затем настройте способ загрузки статических файлов в нашу корзину S3 без использования Heroku вообще. Однако я не уверен, что это правильный способ сделать это, и был бы признателен за совет по этому поводу.

Причина, по которой мы изучали это, заключается в том, что размер нашего Heroku slug начинает расти слишком большим (~ 450 МБ), и нам нужно начать его уменьшать.

Ответ №1:

После еще нескольких поисков я нашел примеры людей, делающих именно то, что я описал выше, то есть загружающих статические файлы непосредственно в S3 без использования какого-либо промежуточного хранилища. В этой статье показано, как настроить Django и S3 таким образом, чтобы при запуске python manage.py collectstatic на вашем локальном компьютере статические файлы копировались непосредственно на S3.

Эта конфигурация в сочетании с отключением collectstatic на Heroku (https://devcenter.heroku.com/articles/django-assets#disabling-collectstatic ) и добавление наших статических файлов в .slugignore , было бы именно тем, что я искал, а именно загружать статические файлы непосредственно в S3, не загружая их сначала в Heroku.

Больше информации из документов Django