DJANGO ModuleNotFound: INSTALLED_APPNAME во время развертывания gunicorn wsgi

Я настраиваю wsgi.py и DockerFile для развертывания моего приложения django в DigitalOcean, но я получаю следующие ошибки на этапе развертывания после успешной сборки.

У меня есть приложения django, созданные manage.py startapp XXX каждое с именами 'users' и 'documents'. Судя по трассировке ошибок, я думаю, что есть проблема с путем, поскольку он не обнаруживает приложения из моей конфигурации "INSTALLED_APPS"

Журнал ошибок

-07-31 05:49:23]   File "/code/scraft-server/wsgi.py", line 14, in <module>
[2022-07-31 05:49:23]     from configurations.wsgi import get_wsgi_application  # noqa
[2022-07-31 05:49:23]   File "/usr/local/lib/python3.8/site-packages/configurations/wsgi.py", line 8, in <module>
[2022-07-31 05:49:23]     application = get_wsgi_application()
[2022-07-31 05:49:23]   File "/usr/local/lib/python3.8/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
[2022-07-31 05:49:23]     django.setup(set_prefix=False)
[2022-07-31 05:49:23]   File "/usr/local/lib/python3.8/site-packages/django/__init__.py", line 24, in setup
[2022-07-31 05:49:23]     apps.populate(settings.INSTALLED_APPS)
[2022-07-31 05:49:23]   File "/usr/local/lib/python3.8/site-packages/django/apps/registry.py", line 91, in populate
[2022-07-31 05:49:23]     app_config = AppConfig.create(entry)
[2022-07-31 05:49:23]   File "/usr/local/lib/python3.8/site-packages/django/apps/config.py", line 223, in create
[2022-07-31 05:49:23]     import_module(entry)
[2022-07-31 05:49:23]   File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
[2022-07-31 05:49:23]     return _bootstrap._gcd_import(name[level:], package, level)
[2022-07-31 05:49:23] ModuleNotFoundError: No module named 'users'

дерево файлов

monorepo
├── README.md
├── __init__.py
├── backend-server
│   ├── users //(created with startapp)
│   ├── documents //(created with startapp)
│   ├── config
│   │   ├── common.py
│   │   ├── local.py
│   │   ├── production.py
│   ├── ...
├── docker-compose.yml
├── manage.py
├── requirements.txt
├── users
├── urls.py
├── wait_for_postgres.py
└── wsgi.py

wsgi.py

import os

from configurations.wsgi import get_wsgi_application  # noqa

application = get_wsgi_application()

config.production.py

import os
from .common import Common

class Production(Common):
    INSTALLED_APPS = (
        # ...
        # My apps
        "users",
        "document",
        # etc
        "corsheaders",
        "gunicorn",
    )
    SECRET_KEY = os.getenv("DJANGO_SECRET_KEY")
    # all other configs are set inside config.common.py

DockerFile

FROM python:3.8
ENV PYTHONUNBUFFERED 1
ENV DJANGO_SETTINGS_MODULE backend-server.config.production
ENV DJANGO_CONFIGURATION Production

# Allows docker to cache installed dependencies between builds
COPY ./requirements.txt requirements.txt
RUN pip install -r requirements.txt

# Adds our application code to the image
WORKDIR /code/backend-server
COPY backend-server .  
WORKDIR /code

EXPOSE 8000

# Run the production server
CMD newrelic-admin run-program gunicorn --bind localhost:$PORT --access-logfile - backend-server.wsgi:application

Проблема в том, что ваш проект не распознает ваше приложение, которое является пользователем. пожалуйста, измените ваше приложение так, чтобы оно выглядело следующим образом.

INSTALLED_APPS = [
    'users.apps.UsersConfig',
    'document.apps.DocumentConfig',    
]

https://docs.djangoproject.com/en/4.0/ref/applications/

Вернуться на верх