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

Docker部署Django应用启动正常但浏览器返回空响应求助

问题排查:Docker中Django应用启动但无法访问

根据你提供的配置和日志,以下是几个关键排查方向:

1. 确认Django服务绑定到0.0.0.0

从日志可见,Django仍启动在http://127.0.0.1:8000/,说明你修改的0.0.0.0:8000命令未生效:

  • 检查docker-compose.yml中的command,确保最终启动命令为:
    python ./analyser/manage.py runserver 0.0.0.0:8000
    
  • 可暂时移除migrate命令单独测试启动,排除命令拼接问题:
    command: python ./analyser/manage.py runserver 0.0.0.0:8000
    

2. 检查Django的ALLOWED_HOSTS配置

这是导致空响应的常见原因:

  • 打开项目settings.py,确保ALLOWED_HOSTS包含localhost或开发环境通配符:
    ALLOWED_HOSTS = ['localhost', '127.0.0.1', '[::1]']
    # 开发环境可直接使用
    ALLOWED_HOSTS = ['*']
    

Django会拒绝来自未在ALLOWED_HOSTS中列出的主机的请求,直接返回空响应。

3. 修正容器内文件路径问题

从docker-compose.yml的context: ./analyser可知,构建镜像时会将本地analyser目录下的文件复制到容器/code目录。若你的项目结构是analyser/manage.py,容器内manage.py路径应为/code/manage.py,而非/code/analyser/manage.py:

  • 调整command为:
    command: bash -c "python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
    

路径错误会导致启动的服务并非预期项目,或引发隐性问题。

4. 验证端口映射和网络

  • 在Windows上检查8000端口是否被占用:
    netstat -ano | findstr :8000
    
    若被占用,修改docker-compose.yml端口映射(如改为8001:8000)后重启。
  • 尝试直接通过容器IP访问:
    1. 查看容器IP:
      docker inspect version_1-analyser-1 | grep "IPAddress"
      
    2. 在浏览器访问http://<容器IP>:8000,若能访问则说明是本地localhost解析或端口转发问题,可尝试重启Docker Desktop。

内容的提问来源于stack exchange,提问作者Rajasirpi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 16:42:51