Question

Lors du déploiement d'une application Django à l'aide de dokku, j'obtiens une erreur suivante

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

Je n'ai trouvé aucun moyen de courir heroku run python ./manage.py collectstatic --noinput pour un conteneur Dokku, mais quand j'essaye dokku run my app python ./manage.py collectstatic --noinput, les fichiers statiques sont copiés avec succès vers le STATIC_ROOT dossier et aucun message d'erreur donné.

Je pourrais résoudre le problème en plaçant collectstatic commande dans Procfile:

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

Néanmoins, j'aimerais savoir quelle était la cause du problème et comment le déboguer.Des idées?

Était-ce utile?

La solution

Vous devriez avoir quatre paramètres dans votre fichier settings.py appelés MEDIA_ROOT, MEDIA_URL, STATIC_ROOT et STATIC_URL.

J'ai réglé le mien comme ceci :

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

Dans le conteneur Docker créé, vous trouverez votre application sous /app qui crée le chemin multimédia /app/media/ et le chemin statique /app/static/.

Malheureusement, si vous n'avez pas de dossier multimédia et statique validé dans git, il ne sera pas créé automatiquement sous /app.

Puisque git ne vous permet pas de valider un dossier vide (il valide uniquement les fichiers), je fais ce qui suit dans mes projets :

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

La commande 'touch' crée un fichier vide, puis vous 'git add' les deux fichiers nouvellement créés et les archivez.

Désormais, lorsque vous appuyez, les répertoires seront là pour contenir les fichiers multimédias et statiques.Gardez simplement à l'esprit que chaque fois que vous « git push », un nouveau conteneur est créé et l'ancien est détruit.Bien que cela ne pose pas de problème pour vos fichiers statiques, vos médias seront perdus à moins que vous ne les stockiez ailleurs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top