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

Windows本地Docker中Django与Nginx同网络504超时问题求助

问题分析与解决办法

可能的原因

  • Django服务未真正正常响应:容器状态显示正常,但内部可能因代码修改残留问题(如urls.py语法错误、依赖缺失、数据库连接异常)导致服务无法处理请求。
  • 网络连通性故障:虽配置同一网络,但可能存在容器名称解析失败、Django端口监听异常,或Nginx无法正确路由到Django服务。
  • 缓存与静态文件问题:删除handler404后Django存在缓存残留,或静态文件目录权限/路径不匹配引发转发异常。
  • Windows Docker文件系统兼容性:挂载卷的文件同步延迟、权限问题导致Django读取代码文件异常。

分步解决步骤

1. 确认Django服务内部可用性

进入Django容器,直接测试本地服务:

docker exec -it belamarca-app-hlg bash
# 测试本地服务响应
curl http://127.0.0.1:8000

若返回错误或连接失败:

  • 查看Django容器日志排查代码问题:docker logs belamarca-app-hlg
  • 检查urls.py是否有残留语法错误,确认删除handler404时未误删其他代码
  • 重新安装依赖:pip install -r requirements.txt

2. 验证Nginx与Django的网络连通性

进入Nginx容器,测试网络可达性:

docker exec -it belamarca-web-hlg bash
# 测试容器名称解析
ping belamarca
# 测试访问Django服务
curl http://belamarca:8000

若连通失败:

  • 检查网络成员:docker network inspect belamarca-hlg,确认两容器均在该网络内
  • 强制重建并重启容器:docker-compose down && docker-compose up -d --build

3. 清理Django缓存与静态文件

在Django容器内执行:

python manage.py clearcache
python manage.py collectstatic --noinput

可在Dockerfile中添加静态文件权限配置,避免Windows挂载卷权限问题:

RUN chmod -R 755 /belamarca/static/

4. 优化Nginx与Django配置

  • 给Nginx添加超时设置,避免因Django响应慢触发504,在nginx.conf的location /块中加入:
    proxy_connect_timeout 60s;
    proxy_send_timeout 60s;
    proxy_read_timeout 60s;
    
  • 替换Django启动命令为生产环境更稳定的gunicorn(可选):
    在docker-compose.yml的belamarca服务中修改command:
    command: gunicorn belamarca.wsgi:application --bind 0.0.0.0:8000
    

5. 检查Windows Docker文件共享设置

打开Docker Desktop,进入设置 > 资源 > 文件共享,确认项目所在磁盘分区已被勾选,确保挂载卷能正常同步文件。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 10:55:57