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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top