在Docker容器中看不到Django

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

首先我用Docker-file构build我的容器。 没有什么特别的(只有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 

问题是你在Docker容器中将开发服务器暴露给127.0.0.1 ,而不是在主机操作系统上。 如果你访问另一个控制台到你的容器,并做一个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 

另外,为了获得更多灵感,您可以使用内置的开发服务器https://github.com/Niklas9/django-unixdatetimefield/blob/master/Dockerfile查看这个可用的Dockerfile来托pipeDjango应用程序&#x3002;

您需要在您的Dockerfile中公开8000端口并运行像gunicorn这样的WSGI服务器。 如果你按照这里的步骤,你应该是好的… https://semaphoreci.com/community/tutorials/dockerizing-a-python-django-web-application

我同意Niklaus9的评论。 如果我可以build议一个增强尝试

 python manage.py runserver [::]:8000 

区别在于[::]支持ipv6地址。

我也注意到一些mongodb的包。 如果你想在本地testing和开发,你可以创builddocker容器,并使用docker compose在你的机器上testing你的应用,然后部署到dev / stage / prod环境。

你可以find更多关于如何设置一个Django的应用程序链接到数据库后端docker在本教程http://programmathics.com/programming/docker/docker-compose-for-django/ (免责声明:我是创造者的网站)