Collectstatic de error de configuración de la hora de implementar aplicación de Django con dokku
-
21-12-2019 - |
Pregunta
Al implementar una aplicación de Django usando dokku estoy recibiendo un error siguientes
Collectstatic configuration error. To debug, run:
$ heroku run python ./manage.py collectstatic --noinput
He encontrado ninguna manera de ejecutar heroku run python ./manage.py collectstatic --noinput
para un dokku contenedor, pero cuando estoy tratando de dokku run my app python ./manage.py collectstatic --noinput
, los archivos estáticos se copien correctamente el STATIC_ROOT
carpeta y no hay mensaje de error.
Yo podría resolver el problema mediante la colocación de collectstatic
comando en Procfile
:
web: python manage.py collectstatic --noinput ; gunicorn myapp.wsgi
Aún así, me encantaría saber lo que estaba causando el problema y cómo puede ser depurado.Alguna idea?
Solución
Usted debe tener cuatro valores en su settings.py archivo llamado MEDIA_ROOT
, MEDIA_URL
, STATIC_ROOT
y STATIC_URL
.
Yo el mío, así:
MEDIA_ROOT = 'media'
STATIC_ROOT = 'static'
MEDIA_URL = '/media'
STATIC_URL = '/static'
Dentro de la ventana acoplable contenedor que se ha creado, usted encontrará su aplicación en /app lo que hace que la ruta de medios de comunicación /app/media/ y la ruta estática /app/static/.
Desafortunadamente, si usted no tiene un medio de comunicación y estática de la carpeta cometidos en git, que no se crea en /app automáticamente.
Desde git no te permite cometer una carpeta vacía (sólo comprometen a los archivos), hago lo siguiente en mis proyectos:
mkdir media static
touch media/.dir
touch static/.dir
git add media/.dir static/.dir
git commit -m 'Make media and static directories'
El 'toque' comando crea un archivo vacío, entonces usted 'git add' los dos archivos recién creados y protegerlos.
Ahora, cuando usted empuje, los directorios estará allí para contener a los medios de comunicación y los archivos estáticos.Solo hay que tener en cuenta que cada vez que 'git push', un nuevo contenedor es creado, y el viejo se destruye.Si bien esto no es un problema para los archivos estáticos, de sus medios de comunicación se perderán a menos que almacenarlo en alguna otra parte.