Приложение Django при докеризации выдает "Starting development server at http://0.0.0.0:8000/", но не отображается в браузере
Итак, я новичок в docker и Django. У меня есть приложение django, которое я пытаюсь докеризировать и запустить. В моем requirements.txt в качестве пакетов указаны только django и gunicorn.
После создания и запуска образа docker в терминале я получаю следующее сообщение:
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
August 26, 2021 - 06:57:22
Django version 3.2.6, using settings 'myproject.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
Ниже приведен мой Dockerfile:
FROM python:3.6-slim
ENV PYTHONUNBUFFERED=1
RUN mkdir /Django
WORKDIR /Django
ADD . /Django
RUN pip install -r requirements.txt
EXPOSE 8000
CMD python manage.py runserver 0.0.0.0:8000
Команды, которые я использую:
docker build . -t myproj
docker run -p 8000:8000 myproj
Я пробовал добавить allowedhosts = ['127.0.0.1'] в settings.py, но все равно получаю "The site can't be reached. 127.0.0.1 отказался подключиться". Не удается увидеть экран "Поздравляем".
Пожалуйста, помогите мне с этим.
P.s: Я использую windows machine
Обновления
Я попробовал выполнить следующую строку и получил следующий результат:
docker exec 8e6c4e4a58db curl 127.0.0.1:8000
OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"curl\": executable file not found in $PATH": unknown
Без вашего файла settings.py это может быть трудно понять. Вы говорите, что у вас там есть allowedhosts = ['127.0.0.1']
, и это определенно не должно быть необходимым. Это может быть причиной блокировки вашего хоста, поскольку запросы от вашего хоста приходят с другого IP-адреса.
Я сделал следующий Dockerfile, который создает стартовый проект и запускает его
FROM python:latest
RUN python -m pip install Django
RUN django-admin startproject mysite
WORKDIR /mysite
EXPOSE 8000
CMD python manage.py runserver 0.0.0.0:8000
Если я создам его и запущу с
docker build -t mysite .
docker run -d -p 8000:8000 mysite
Я могу подключиться к http://localhost:8000/ на своей машине и получить страницу по умолчанию (я тоже на Windows).
Надеюсь, это поможет вам определить местонахождение вашей проблемы.
PS: Ваша команда curl
не работает, потому что curl не установлен в вашем образе, поэтому его сбой не имеет отношения к вашей проблеме.