我想在一个简单的 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)
问题是您将开发服务器暴露在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。
| 归档时间: |
|
| 查看次数: |
1214 次 |
| 最近记录: |