Я пытаюсь развернуть приложение django на Heroku (используя Whitenoise ), и все работает нормально, за исключением файлов stati c. Пример проекта просто показывает заголовок «Home» на первой странице. Если файл css загружен правильно, заголовок будет иметь красный цвет, в противном случае он будет черным.
Я получил вышеуказанный проект для работы в контейнере virtualenv
, Docker
с DEBUG=False
, но Я не мог заставить его работать на Heroku по какой-то причине (заголовок был бы красным, если бы CSS загружался правильно).
Я пытался использовать django-heroku
как предложено документами Heroku , но он начинает выдавать ошибку сервера 500, а при проверке heroku logs
он говорит, что манифест не найден для файла css , который, похоже, потому что он устанавливает STATICFILES_STORAGE
на другое значение.
Что-то неправильно настроено в файлах settings или yml ? Или, возможно, из-за того, что я развертываю файл Docker (в отличие от Procfile
), мне нужно использовать другие настройки?
Обновление 1:
Как предложено в комментариях. Я попытался следовать тому, что сделано в в этом руководстве , в котором выполнены две дополнительные вещи:
- Настройка
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
- Запуск
heroku plugins:install @heroku-cli/plugin-manifest
При этом теперь я получаю другую ошибку HTTP 500:
/ usr / local / lib / python3 .7 / site-packages / whitenoise / base.py: 115: UserWarning: Нет каталога в: / django -heroku-staticfiles / staticfiles /
Теперь я думаю, что проблема ясна. Итак, я начал запускать несколько команд на экземпляре heroku:
$ heroku run ls -l /django-heroku-staticfiles
Running ls -l /django-heroku-staticfiles on ⬢ evening-lowlands-39080... up, run.5553 (Free)
total 160
-rw------- 1 u35232 dyno 179 May 30 12:21 Dockerfile
-rw------- 1 u35232 dyno 131072 May 30 12:21 db.sqlite3
-rw------- 1 u35232 dyno 235 May 30 12:21 docker-compose.yml
drwx------ 2 u35232 dyno 4096 May 30 12:21 hello_project
-rw------- 1 u35232 dyno 182 May 30 12:21 heroku.yml
-rwx------ 1 u35232 dyno 633 May 30 12:21 manage.py
drwx------ 4 u35232 dyno 4096 May 30 12:21 pages
-rw------- 1 u35232 dyno 93 May 30 12:21 requirements.txt
drwx------ 2 u35232 dyno 4096 May 30 12:21 templates
$ heroku run python manage.py collectstatic --clear --noinput
Running python manage.py collectstatic --clear --noinput on ⬢ evening-lowlands-39080... up, run.9686 (Free)
131 static files copied to '/django-heroku-staticfiles/staticfiles', 413 post-processed.
$ heroku run ls -l /django-heroku-staticfiles
Running ls -l /django-heroku-staticfiles on ⬢ evening-lowlands-39080... up, run.3303 (Free)
total 160
-rw------- 1 u20456 dyno 179 May 30 12:21 Dockerfile
-rw------- 1 u20456 dyno 131072 May 30 12:21 db.sqlite3
-rw------- 1 u20456 dyno 235 May 30 12:21 docker-compose.yml
drwx------ 2 u20456 dyno 4096 May 30 12:21 hello_project
-rw------- 1 u20456 dyno 182 May 30 12:21 heroku.yml
-rwx------ 1 u20456 dyno 633 May 30 12:21 manage.py
drwx------ 4 u20456 dyno 4096 May 30 12:21 pages
-rw------- 1 u20456 dyno 93 May 30 12:21 requirements.txt
drwx------ 2 u20456 dyno 4096 May 30 12:21 templates
Почему staticfiles
не создается? Может надо через Docker команду запустить? Извините, я новичок в Docker, Django и Heroku, поэтому я могу упустить что-то очевидное.