#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