You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器中Django无法运行的原因排查求助

问题排查与解决方案

让我帮你梳理下Django无法运行的核心原因,以及对应的修复方案:

核心问题所在

你的Dockerfile只是完成了Python环境搭建、vim工具安装和Django包的安装,但完全没有初始化任何Django项目——容器里根本没有manage.py这类Django应用的核心文件,自然没法启动服务。另外你启动容器的命令只是进入bash终端,也没有自动触发Django服务的逻辑。

两种可行的修复方案

方案一:修改Dockerfile,预创建项目并设置默认启动命令

这是更规范的做法,能让容器启动后直接运行Django服务。修改后的Dockerfile如下:

FROM python:3.6.5-jessie
MAINTAINER example-user
RUN apt-get update \
&& apt-get install -y vim
RUN mkdir require
COPY ./requirements.txt require/requirements.txt
RUN pip install -r require/requirements.txt

# 新增:创建Django项目并切换到项目目录
RUN django-admin startproject sample_project
WORKDIR /sample_project

EXPOSE 8000
# 设置容器启动时默认执行的命令,启动Django开发服务器(绑定0.0.0.0允许外部访问)
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

然后重新构建镜像:

docker build -t sample-image .

启动容器时无需手动进入bash,直接后台运行:

docker run -d --name sample_django -p 8001:8000 sample-image

之后在宿主机浏览器访问 http://localhost:8001,就能看到Django的默认欢迎页面了。

方案二:在现有容器内手动创建并启动项目

如果你不想修改Dockerfile,也可以在当前容器的bash终端里手动操作:

  1. 首先在容器内创建Django项目:
django-admin startproject sample_project
cd sample_project
  1. 启动Django开发服务器(必须绑定0.0.0.0,否则宿主机无法通过端口映射访问):
python manage.py runserver 0.0.0.0:8000

保持终端打开,然后在宿主机访问 http://localhost:8001 即可。

额外提醒

  • Django开发服务器默认只监听127.0.0.1,在容器环境下必须指定0.0.0.0:8000,否则外部无法访问服务。
  • 如果后续需要把本地的Django代码挂载到容器里开发,可以用-v参数,比如:
docker run -ti --name sample_django -p 8001:8000 -v /你的本地项目路径:/sample_project sample-image /bin/bash

内容的提问来源于stack exchange,提问作者David Foie Gras

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:03:03