Django Whitenoise con staticfiles comprimidos -- python campo con django campo con django-compressor campo con whitenoise camp Relacionados El problema

Django Whitenoise with compressed staticfiles


1
vote

problema

Español

No puedo hacer que mi proyecto Django se ejecute con Whitenoise y comprimido estáticos (incluyendo Lobsass). En los enlaces a continuación, leí que solo es posible al compresión fuera de línea de los estáticos necesarios. Pero cuando comencé el contenedor de Docker, ejecutando compress comando

  docker-compose -f production.yml run --rm django python manage.py compress   

me da error:

  ValueError: Missing staticfiles manifest entry for 'sass/app.scss'   

Mientras intentas solicitar el sitio me da un error siguiente (como se esperaba?):

  compressor.exceptions.OfflineGenerationError: You have offline compression enabled but key "..." is missing from offline manifest. You may need to run "python manage.py compress"   
Las configuraciones

son las siguientes (construir con cookiecutter-django, consulte el enlace para la Base completa de código a continuación):

  STATIC_ROOT = str(ROOT_DIR("staticfiles")) STATIC_URL = "/static/" STATICFILES_DIRS = [str(APPS_DIR.path("static"))] STATICFILES_FINDERS = [     "django.contrib.staticfiles.finders.FileSystemFinder",     "django.contrib.staticfiles.finders.AppDirectoriesFinder", ]  STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"  STATICFILES_FINDERS += ["compressor.finders.CompressorFinder"]  COMPRESS_PRECOMPILERS = [("text/x-scss", "django_libsass.SassCompiler")] COMPRESS_CACHEABLE_PRECOMPILERS = (("text/x-scss", "django_libsass.SassCompiler"),)  COMPRESS_ENABLED = env.bool("COMPRESS_ENABLED", default=True) COMPRESS_STORAGE = "compressor.storage.GzipCompressorFileStorage" COMPRESS_URL = STATIC_URL   

Entonces, después de buscar en Internet por 1 día; Estoy atascado ... ¡Thx por alguna ayuda o sugerencia!

Base de código: https://github.com/rl-institut/e_metrobus/ Árbol / compresa

que se construye con cookiecutter-django-fundación

Incluyendo los siguientes cambios en config/setttings/production.py :

  COMPRESS_STORAGE = "compressor.storage.GzipCompressorFileStorage"  # Instead of pre-set "storages.backends.s3boto3.S3Boto3Storage" COMPRESS_ROOT = STATIC_ROOT  # Just in case COMPRESS_OFFLINE = True  # Needed to run compress offline   

Posibles enlaces relacionados:

  • whitenoise y django-compresor Causa 404 para archivos comprimidos
  • posible usar whitenoise con django-compresor?
  • estadicfiles de Django no se encuentra en Heroku (con Whitenoise)
  • https://github.com/django-compressor/django-compressor / Problemas / 486

editar

Solimí la respuesta de Justins (ver más abajo, con cambios adicionales). Mi error estaba tratando de comprimir archivos con el contenedor ya ejecutado, dándome el error anterior. Después de cambiar el archivo DOCTER con las siguientes líneas (notificación del duplicado collectstatic CMD!):

  python /app/manage.py collectstatic --noinput python /app/manage.py compress --force python /app/manage.py collectstatic --noinput /usr/local/bin/gunicorn config.wsgi --bind 0.0.0.0:5000 --chdir=/app   

y la imagen de reconstrucción Todo funcionó como un encanto :) Además, divergente de la configuración anterior, tuve que configurar COMPRESS_ENABLED=True en My Settings / Envio.

Original en ingles

I'm not able to get my django project to run with whitenoise and compressed staticfiles (including libsass). In links below, I read that it's only possible by offline compression of needed staticfiles. But when I started up the docker container, running compress command

docker-compose -f production.yml run --rm django python manage.py compress 

gives me error:

ValueError: Missing staticfiles manifest entry for 'sass/app.scss' 

While trying to request the site gives me following error (as expected?):

compressor.exceptions.OfflineGenerationError: You have offline compression enabled but key "..." is missing from offline manifest. You may need to run "python manage.py compress" 

Settings are as follows (build with cookiecutter-django, see link for complete code base below):

STATIC_ROOT = str(ROOT_DIR("staticfiles")) STATIC_URL = "/static/" STATICFILES_DIRS = [str(APPS_DIR.path("static"))] STATICFILES_FINDERS = [     "django.contrib.staticfiles.finders.FileSystemFinder",     "django.contrib.staticfiles.finders.AppDirectoriesFinder", ]  STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"  STATICFILES_FINDERS += ["compressor.finders.CompressorFinder"]  COMPRESS_PRECOMPILERS = [("text/x-scss", "django_libsass.SassCompiler")] COMPRESS_CACHEABLE_PRECOMPILERS = (("text/x-scss", "django_libsass.SassCompiler"),)  COMPRESS_ENABLED = env.bool("COMPRESS_ENABLED", default=True) COMPRESS_STORAGE = "compressor.storage.GzipCompressorFileStorage" COMPRESS_URL = STATIC_URL 

So after searching the internet for 1 day; I'm stuck... Thx for any help or suggestion!

Code base: https://github.com/rl-institut/E_Metrobus/tree/compress

which is build with cookiecutter-django-foundation

including the following changes to config/setttings/production.py:

COMPRESS_STORAGE = "compressor.storage.GzipCompressorFileStorage"  # Instead of pre-set "storages.backends.s3boto3.S3Boto3Storage" COMPRESS_ROOT = STATIC_ROOT  # Just in case COMPRESS_OFFLINE = True  # Needed to run compress offline 

Possible related links:

  • Whitenoise and django-compressor cause 404 for compressed files
  • Possible to use WhiteNoise with Django-Compressor?
  • Django staticfiles not found on Heroku (with whitenoise)
  • https://github.com/django-compressor/django-compressor/issues/486

EDIT

Solved it using Justins answer (see below, with additonal changes). My mistake was trying to compress files with already running container, giving me the error above. After changing Dockerfile with following lines (Notice the duplicate collectstatic cmd!):

python /app/manage.py collectstatic --noinput python /app/manage.py compress --force python /app/manage.py collectstatic --noinput /usr/local/bin/gunicorn config.wsgi --bind 0.0.0.0:5000 --chdir=/app 

and rebuilding image everything worked like a charm :) Additionally, diverging from settings above, I had to set COMPRESS_ENABLED=True in my settings/env file.

           

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

acabo de tener el mismo problema.

Agregar esto a proyecto / componer / producción / django / inicio

  dispatch_async3  

es.

  dispatch_async4  
 

I just had the same problem.

Add this to project/compose/production/django/start

python /app/manage.py compress --force 

i.e.

python /app/manage.py collectstatic --noinput python /app/manage.py compress --force /usr/local/bin/gunicorn config.wsgi --bind 0.0.0.0:5000 --chdir=/app 
 
 
 
 

Relacionados problema

0  Cómo resolver una "Energía de OfflineGenerationError: ¿Ha habilitado la compresión fuera de línea pero Key ..." sirvió por Windows 2019 IIS?  ( How to solve an offlinegenerationerror you have offline compression enabled bu ) 
Mi código con Django-Compressor trabaja en mi máquina local con depuración = verdadero o falso, pero cuando presiono a la producción, que es un servidor de Wi...

1  Error Importar Whitenoise  ( Error import whitenoise ) 
Estoy tratando de implementar mi sitio web en PythonAnanywhere.com después del tutorial de Djangogirls. Cuando ejecuto mi sitio web, me da este error: Er...

5  Whitenoise dando errores en jquery-ui.css cuando se hace colectora  ( Whitenoise giving errors on jquery ui css when doing collectstatic ) 
Estoy tratando de instalar el paquete JQery-Ui-dist, y cuando ejecuto Collectstatic, Whitenoise parece tener problemas cuando una URL está dentro de las citas...

0  Django Whitenoise Módulo no encontrado  ( Django whitenoise module not found ) 
Estoy usando Docker para implementar mi solicitud y por alguna razón cada vez que mi servidor Django sigue devolviendo el siguiente error: ImportError: No mo...

0  Redirigiendo cada url a 500 Error del servidor Django  ( Redirecting every url to 500 server error django ) 
Mi aplicación Django funciona en el servidor de desarrollo local. Para desplegar en Heroku tuve que usar Whitenoise para servir archivos estáticos. La aplicac...

0  TemplateTesNoteExist at / index.html Error cuando Django + reacción aplicación implementada en Heroku  ( Templatedoesnotexist at index html error when djangoreact app deployed to her ) 
He creado un simple Django y un amplificador; Aplicación de reacción (que solo carga reaccionar la página predeterminada por ahora) y estoy tratando de implem...

0  No puede poder servir archivos de medios en cPanel Django  ( Can not able to serve media files on cpanel django ) 
Construyo un sitio web con Django y ahora lo aloja. Utilicé Whitenoise para servir imágenes, pero solo las estáticas aparecen cuando la depuración es falsa. ¿...

0  Las imágenes que subo en la consola de administración no se sirven  ( Images i upload on the admin console are not served ) 
Esto está siendo un poco confuso para mí. Si configuro DEBUG=True Ejecute python manage.py runserver en VSC, puedo acceder a http://127.0.0.1:8000/admin ...

1  Whitenoise no agrega una cadena aleatoria  ( Whitenoise not adding random string ) 
Acabo de poner otra copia de mi aplicación Django en producción. La única diferencia prevista entre mi aplicación "antigua" y la "nueva" es que la aplicación ...

0  ¿Emisión de archivo estático causando un error de Django 500?  ( Static file issue causing django 500 error ) 
Estoy usando Heroku angular y Django. He estado notando que cuando uso 'Ng Build' para construir nuevos archivos estáticos para agregar a Django y luego presi...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos