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
相关产品推荐
相关产品推荐

