Frage

Beim Bereitstellen einer Django-App mit dokku wird die folgende Fehlermeldung angezeigt

Collectstatic configuration error. To debug, run:
$ heroku run python ./manage.py collectstatic --noinput

Ich fand keinen Weg zu rennen heroku run python ./manage.py collectstatic --noinput für einen Dokku-Container, aber wenn ich es versuche dokku run my app python ./manage.py collectstatic --noinput, werden die statischen Dateien erfolgreich in die STATIC_ROOT ordner und keine Fehlermeldung angegeben.

Ich könnte das Problem lösen, indem ich platziere collectstatic befehl in Procfile:

web: python manage.py collectstatic --noinput ; gunicorn myapp.wsgi

Trotzdem würde ich gerne wissen, was das Problem verursacht hat und wie es behoben werden kann.Irgendwelche Ideen?

War es hilfreich?

Lösung

Sie sollten vier Einstellungen in Ihrem haben settings.py aufgerufene Datei MEDIA_ROOT, MEDIA_URL, STATIC_ROOT und STATIC_URL.

Ich habe meine so eingestellt:

MEDIA_ROOT = 'media' STATIC_ROOT = 'static' MEDIA_URL = '/media' STATIC_URL = '/static'

Innerhalb des Docker-Containers, der erstellt wird, finden Sie Ihre Anwendung unter / app, die den Medienpfad / app / media / und den statischen Pfad / app / static / erstellt.

Wenn Sie keinen Medien- und statischen Ordner in git festgeschrieben haben, wird dieser leider nicht automatisch unter /app erstellt.

Da git es Ihnen nicht erlaubt, einen leeren Ordner festzuschreiben (es werden nur Dateien festgeschrieben), mache ich in meinen Projekten Folgendes:

mkdir media static touch media/.dir touch static/.dir git add media/.dir static/.dir git commit -m 'Make media and static directories'

Der Befehl 'touch' erstellt eine leere Datei, dann fügen Sie die beiden neu erstellten Dateien hinzu und checken sie ein.

Wenn Sie jetzt drücken, werden die Verzeichnisse vorhanden sein, um die Medien und statischen Dateien zu enthalten.Denken Sie daran, dass jedes Mal, wenn Sie 'git push' verwenden, ein neuer Container erstellt und der alte zerstört wird.Während dies für Ihre statischen Dateien kein Problem darstellt, gehen Ihre Medien verloren, wenn Sie sie nicht an einem anderen Ort speichern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top