Приложение 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 не установлен в вашем образе, поэтому его сбой не имеет отношения к вашей проблеме.

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