es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Nginx + Django: ModuleNotFoundError: No se encuentra el módulo llamado ‘app’

Estoy tratando de ejecutar mi aplicación de Django con Nginx y Gunicorn en Docker.

En los registros de docker compose tengo el siguiente error: (registro completo: https://pastebin.com/EXd3Bsii)

Archivo "/usr/local/lib/python3.9/site-packages/gunicorn/util.py", línea 359, en import_app
    mod = importlib.import_module(module)
  Archivo "/usr/local/lib/python3.9/importlib/__init__.py", línea 127, en import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  Archivo "<frozen importlib._bootstrap="">", línea 1030, en _gcd_import
...
  Archivo "<frozen importlib._bootstrap="">", línea 984, en _find_and_load_unlocked
ModuleNotFoundError: No se encontró el módulo 'app'

¿Cómo puedo resolver el problema?

¿Debería especificar la configuración de wsgi?

Mi código

wsgi.py

import os
from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'potok.settings')
application = get_wsgi_application()

nginx-conf.conf

upstream app {
    server django:8000;
}

server {
    listen: 80;
    server_name: localhost;

    location / {
        proxy_pass http://app;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect_off;
    }

    location /staticfiles/ {
        alias /var/www/html/staticfiles/;
    }
}

docker-compose.yml

“`yaml
version: '3.9'

services:
django:
build: . # ruta al Dockerfile
command: sh -c "gunicorn –bind 0.0.0.0:8000 app.wsgi"
volumes:
– .:/project
– static_data:/project/static
expose:
– 8000
environment:
– DATABASE_URL=postgres://postgres:XXXXXXXXX@localhost:5432/lk_potok_2
– DEBUG=1

nginx:
image: nginx:1.19.8-alpine
depends_on:
– django
ports:
– "80:80"
volumes:
– static_data:/var/www/html/static
– ./nginx-conf.d:/etc/nginx/conf.d

volumes:
pg_data:
static_data:
“`

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El error parece estar relacionado con la importación de la aplicación Django en Gunicorn. Sugiere que el módulo “app” no se puede encontrar. Para solucionar el problema, puedes intentar los siguientes pasos:

    1. Verifica que tengas un módulo llamado “app” y que contenga la aplicación Django. Puedes verificar esto revisando la ruta y el contenido del archivo “app.wsgi”.
    2. Verifica que el archivo “wsgi.py” esté en la ubicación correcta y contenga la configuración adecuada. Específicamente, asegúrate de que la variable de entorno DJANGO_SETTINGS_MODULE esté configurada correctamente con la ruta de tu archivo de configuración de Django.
    3. También puede ser necesario especificar la configuración wsgi en el comando de Gunicorn. Agrega el siguiente argumento al comando de Gunicorn en tu archivo Dockerfile:

      --wsgi-file /project/app.wsgi

      Esto le indicará a Gunicorn que utilice el archivo “app.wsgi” como punto de entrada para la aplicación Django.

    4. Asegúrate de que el servidor upstream en tu configuración de Nginx coincida con el nombre de tu servicio Django en tu archivo Docker Compose. En este caso, debería ser “django” en lugar de “app”.

    Una vez que hayas realizado estos cambios, reconstruye tu imagen de Docker y reinicia tus contenedores. Vuelve a verificar los registros para ver si se ha resuelto el error.

Comments are closed.