Я не могу запустить сервер Daphne. Всегда вылетает со следующей ошибкой:
Traceback (most recent call last):
File "/usr/local/bin/daphne", line 8, in <module>
sys.exit(CommandLineInterface.entrypoint())
File "/usr/local/lib/python3.8/site-packages/daphne/cli.py", line 171, in entrypoint
cls().run(sys.argv[1:])
File "/usr/local/lib/python3.8/site-packages/daphne/cli.py", line 233, in run
application = import_by_path(args.application)
File "/usr/local/lib/python3.8/site-packages/daphne/utils.py", line 12, in import_by_path
target = importlib.import_module(module_path)
File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 961, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'apps'
/дома/прассел/приложения/asgi.py
django_asgi_app = get_asgi_application()
application = ProtocolTypeRouter(
{
"http": django_asgi_app,
"websocket": URLRouter([path('ws/notifications/', NotificationConsumer.as_asgi())]),
}
)
Я запускаю Daphne следующим образом из /home/prassel/docker-compose.yml
daphne:
platform: linux/amd64
build:
context: .
dockerfile: Dockerfile.daphne
command: 'sh -c "daphne -b 0.0.0.0 -p 8000 apps.asgi:application"'
restart: always
working_dir: /home/prassel
Dockerfile.daphne
FROM python:3.8-buster
ENV PYTHONUNBUFFERED 1
ARG REQUIREMENTS_FILE
WORKDIR /home/prassel/
RUN pip install daphne
Да, у меня есть. Это содержимое default_app_config = "apps.trainingtelemetry.apps.TrainingTelemetryConfig" Есть и другие папки.
Можете ли вы опубликовать полный тэйсбэк? (вывод перед ошибкой)
Пожалуйста, отредактируйте свой вопрос вместо этого. Комментарии SO имеют ограниченную поддержку форматирования
Я обновил описание с полной трассировкой
Вы уверены, что запускаете команду daphne -b 0.0.0.0 -p 8000 apps.asgi:application
из папки проекта? (/home/prassel/sml-266/simlai-api/
)
Я обновил описание того, как я запускаю Дафну.
Если мой ответ не помог, пожалуйста, опубликуйте содержимое вашего Dockerfile.daphne
ОБНОВЛЕНИЕ: вы не добавляете файлы проекта в свой контейнер Docker во время сборки, поэтому в вашем контейнере нечего запускать. Вам нужно добавить их с помощью команды COPY
или ADD
.
Это одна из основ Docker. Вы должны немного прочитать о том, что такое контейнеры Docker и как они работают, или вы можете использовать официальный пример или следовать одному из бесчисленных Учебники по Django + Docker доступны в Интернете.
Я считаю, что проблема заключается в вашей настройке Docker. Убедитесь, что вы установили WORKDIR
в Dockerfile.daphne
и working_dir:
в docker-compose.yml
одно и то же значение, и все будет хорошо.
Dockerfile
:
FROM ...
WORKDIR /yourproject
COPY ...
RUN ...
...
...
docker-compose.yml
:
daphne:
platform: linux/amd64
build:
context: .
dockerfile: Dockerfile.daphne
command: 'sh -c "daphne -b 0.0.0.0 -p 8000 apps.asgi:application"'
restart: always
working_dir: /yourproject
@SelvaPrasad, можете ли вы добавить свой файл Dockerfile к вопросу. Или загрузить репозиторий минимального воспроизведения на GitHub? На данный момент все должно действительно работать. Кроме того, убедитесь, что вы используете docker compose build
после внесения изменений в Dockerfiles.
Я добавил содержимое Dockerfile. Я запущу сборку docker compose
Не могли бы вы сказать мне, правильно ли я использую имя модуля? Какое имя асги мне нужно передать Дафне? Правильно ли указано имя apps.asgi:application? Я подозреваю, что я смешиваю это там.
@SelvaPrasad обновил мой ответ. Имя вашего модуля верное. Ваш Dockerfile действительно отключен. Вам нужно прочитать о Docker или попробовать работать без него и добавить его позже, когда он вам понадобится.
У вас есть
__init__.py
файл вapps
папке?