Dockerized django приложение не запускается в браузере - PullRequest
0 голосов
/ 26 апреля 2020

У меня возникает проблема, когда я запускаю свой docker образ, который я создал с помощью следующего Dockerfile:

FROM ubuntu:18.04

RUN apt update
RUN apt install -y python3 python3-pip
RUN mkdir /opt/app
COPY Ski4All/ /opt/app/
COPY requirements.txt /opt/app/
RUN pip3 install -r /opt/app/requirements.txt

COPY docker-entrypoint.sh /

EXPOSE 8000
ENTRYPOINT /usr/bin/python3 /opt/app/manage.py runserver 127.0.0.1:8000

С помощью команды docker run -p 8000:8000 -it --rm skiapi

Все работает нормально и Я получаю сообщение о том, что сервер работает на 127.0.0.1:8000, но когда я пытаюсь получить доступ через браузер, он говорит, что соединение было перезапущено, и я не могу получить доступ к Интернету. Любой совет?

Я получил эти журналы от journalctl -xe


abr 26 17:04:51 jhaos-m kernel: docker0: port 1(vethd53f322) entered disabled state
abr 26 17:04:51 jhaos-m kernel: docker0: port 1(vethd53f322) entered disabled state
abr 26 17:04:51 jhaos-m kernel: docker0: port 1(vethd53f322) entered disabled state
abr 26 17:04:51 jhaos-m NetworkManager[1312]: <info>  [1587913491.9849] device (vethd53f322): released from master device docker0
abr 26 17:04:58 jhaos-m kernel: docker0: port 1(vethaa75de2) entered blocking state
abr 26 17:04:58 jhaos-m kernel: docker0: port 1(vethaa75de2) entered disabled state
abr 26 17:04:59 jhaos-m NetworkManager[1312]: <info>  [1587913499.0372] device (docker0): carrier: link connected
abr 26 17:04:59 jhaos-m kernel: docker0: port 1(vethaa75de2) entered blocking state
abr 26 17:04:59 jhaos-m kernel: docker0: port 1(vethaa75de2) entered forwarding state

Но я не знаю, означает ли что-то особенное, также со статусом systemctl выглядит все правильно. И я попытался docker протоколировать <контейнер>, но я только запускаю django сервер и не могу ничего печатать.

Спасибо

PD: Для тех, кто следит за вопросом и начинает с docker не забудьте перестроить образ при внесении каких-либо изменений в проект, dockerfile и т. Д. c .. Для этого могут быть некоторые ошибки.

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

Запустите сервер на 0.0.0.0:8000, а не на 127.0.0.1:8000, так как последний недоступен.

0.0.0.0 означает все адреса IPv4 на локальном компьютере. Если у хоста два IP-адреса, 192.168.1.1 и 10.1.2.1, и сервер, работающий на хосте, прослушивает 0.0.0.0, он будет доступен на обоих этих IP-адресах.

0 голосов
/ 26 апреля 2020

Используйте docker-machine ip default для проверки IP и используйте его вместо localhost. Технически, приложение django обслуживается внутри контейнера, а не на локальном хосте.

Так что в вашем случае вы должны попробовать http://<ip from the command>:8000/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...