отбеливать, не добавляя случайную строку - PullRequest
0 голосов
/ 01 июля 2018

Я только что выпустил еще одну копию моего приложения Django. Единственная предполагаемая разница между моим «старым» приложением и «новым» состоит в том, что старое приложение работает в «традиционном» Heroku, а новое приложение работает в «Dockerized» Heroku.

Самое странное происходит. Я использую Whitenoise для обслуживания своих статических активов. В старом приложении ссылки на мои статические ресурсы выглядят так на генерируемых страницах:

<link href="/static/assets/css/bootstrap.min.9f236e18d5bf.css" rel="stylesheet">

Но в моем новом приложении эта маленькая строка (9f236e18d5bf) отсутствует. это выглядит так:

<link href="/static/assets/css/bootstrap.min.css" rel="stylesheet">

В результате на моем новом сайте нет таблиц стилей.

Есть ли дополнительный шаг, который я должен сделать в версии Dockerized, чтобы заставить это работать? Или я пропускаю некоторую комбинацию значений параметров STATIC *, которые необходимы.

Мой временный обходной путь - добавить python manage.py collectstatic --noinput в Dockerfile.web, а затем установить:

STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage' 

Что работает, но мне интересно, получу ли я проблему с масштабированием в понедельник.

1 Ответ

0 голосов
/ 11 июля 2018

Похоже, ответ состоит из двух частей, и у меня была одна из них, работающая в разное время.

  1. Убедитесь, что это есть в вашем Dockerfile.web:

    RUN python manage.py collectstatic --noinput CMD CMD gunicorn --bind 0.0.0.0:8000 <project-name>.wsgi

Обратите внимание, что вы хотите использовать RUN для вашей команды collectstatic. Очевидно, что только значение last CMD в Dockerfile имеет смысл.

  1. В settings.py, есть

    STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

Этот параметр заставит collectstatic добавить хэши к именам каждого файла, который копируется в каталог, указанный в STATICFILES_ROOT.

...