一尘不染

在Docker容器中看不到Django

docker

我想在一个简单的Docker容器中运行Django。

首先,我使用Docker-file构建了我的容器。没有什么特别的(只有FROM,RUN和COPY命令)

然后我用命令运行容器

docker run -tid -p 8000:8000 --name <container_name> <image>

输入我的容器:

docker exec -it <container_name> bash

运行Django服务器:

python manage.py runserver

得到了:

Starting development server at http://127.0.0.1:8000/

但是当我转到127.0.0.1:8000时,我什么也看不到:

The 127.0.0.1 page isn’t working

没有Nginx或其他工作服务器。

我究竟做错了什么?

更新1(Dockerfile)

FROM ubuntu:16.04
MAINTAINER Max Malyshev <user>
COPY . /root
WORKDIR /root
RUN apt-get update
RUN apt-get install python-pip -y
RUN apt-get install postgresql -y
RUN apt-get install rabbitmq-server -y
RUN apt-get install libpq-dev python-dev -y
RUN apt-get install npm -y
RUN apt-get install mongodb -y
RUN pip install -r requirements.txt

阅读 345

收藏
2020-06-17

共1个答案

一尘不染

问题是您将开发服务器暴露在127.0.0.1Docker容器内部,而不是主机OS上。如果您访问另一个控制台到您的容器并对其执行http请求,127.0.0.1:8000则该容器将起作用。

关键是确保Docker容器将开发服务器公开给所有IPv4地址,您可以使用0.0.0.0代替来实现127.0.0.1

尝试运行以下命令来启动Django开发服务器:

python manage.py runserver 0.0.0.0:8000

另外,为了获得更多启发,您可以查看此工作的Dockerfile,以使用内置开发服务器https://github.com/Niklas9/django-
unixdatetimefield/blob/master/Dockerfile托管Django应用程序。

2020-06-17