在 Docker 容器中看不到 Django

Sno*_*bby 0 django docker

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

首先,我用 Docker 文件构建了我的容器。没有什么特别之处(只有 FROM、RUN 和 COPY 命令)

然后我用命令运行我的容器

docker run -tid -p 8000:8000 --name <container_name> <image>
Run Code Online (Sandbox Code Playgroud)

进入我的容器:

docker exec -it <container_name> bash
Run Code Online (Sandbox Code Playgroud)

运行 Django 服务器:

python manage.py runserver
Run Code Online (Sandbox Code Playgroud)

得到了:

Starting development server at http://127.0.0.1:8000/
Run Code Online (Sandbox Code Playgroud)

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

The 127.0.0.1 page isn’t working
Run Code Online (Sandbox Code Playgroud)

没有 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
Run Code Online (Sandbox Code Playgroud)

Nik*_*as9 5

问题是您将开发服务器暴露在127.0.0.1Docker 容器内部,而不是在主机操作系统上。如果您访问另一个控制台到您的容器并向它发出 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
Run Code Online (Sandbox Code Playgroud)

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