Errore di configurazione collectstatic quando si distribuisce l'app Django con Dokku
-
21-12-2019 - |
Domanda
Quando si distribuisce un'app Django utilizzando Dokku, sto ottenendo un errore seguente
Collectstatic configuration error. To debug, run:
$ heroku run python ./manage.py collectstatic --noinput
.
Non ho trovato alcun modo per eseguire heroku run python ./manage.py collectstatic --noinput
per un contenitore di Dokku, ma quando sto provando dokku run my app python ./manage.py collectstatic --noinput
, i file statici vengono copiati correttamente nella cartella STATIC_ROOT
e nessun messaggio di errore dato.
Potrei risolvere il problema posizionando il comando collectstatic
in Procfile
:
web: python manage.py collectstatic --noinput ; gunicorn myapp.wsgi
.
Eppure, mi piacerebbe sapere cosa stava causando il problema e come può essere debug.Qualche idea?
Soluzione
Dovresti avere quattro impostazioni nel file Impostazioni.py denominato MEDIA_ROOT
, MEDIA_URL
, STATIC_ROOT
e STATIC_URL
.
Ho impostato il mio come:
MEDIA_ROOT = 'media'
STATIC_ROOT = 'static'
MEDIA_URL = '/media'
STATIC_URL = '/static'
All'interno del contenitore Docker che viene creato, troverai la tua applicazione sotto / app che rende il percorso multimediale / app / media / e il percorso statico / app / static /.etringhing / P>
Sfortunatamente se non si dispone di una cartella multimediale e statica commessa in Git, non verrà creata automaticamente sotto / app.
Dal momento che GIT non ti consente di commettere una cartella vuota (commette solo file), faccio quanto segue nei miei progetti:
mkdir media static
touch media/.dir
touch static/.dir
git add media/.dir static/.dir
git commit -m 'Make media and static directories'
Il comando 'Touch' crea un file vuoto, quindi è possibile aggiungere "i due file appena creati e controllali.
Ora quando premi, le directory saranno lì per contenere i file multimediali e i file statici. Tieni presente che ogni volta che hai "spinta", viene creato un nuovo contenitore e il vecchio è distrutto. Mentre questo non è un problema per i tuoi file statici, il tuo supporto sarà perso a meno che non lo conservi da qualche altra parte.