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

Windows下Docker部署Django时出现db主机名临时解析失败报错

该问题解决方案

该报错核心原因是Windows环境下Docker网络DNS注册延迟,或是db容器未完全就绪就启动web容器导致,同时你的配置存在2处可修正的问题,按以下步骤操作即可解决:

  • 首先修正docker-compose.yml中postgres服务的环境变量错误:将POSTGRES_DATABASE: admin改为POSTGRES_DB: admin,postgres官方默认的自动创建数据库的环境变量为POSTGRES_DB,你写错后会导致默认库未创建,也是潜在故障点。
  • 删除web服务下的links: - db:db配置,新版docker-compose中同一自定义网络的服务天然可以通过服务名互通,冗余的links配置在Windows Docker环境下容易触发网络解析冲突。
  • 给web服务增加启动等待逻辑,depends_on仅保证容器启动顺序,不保证postgres进程完全就绪、网络注册完成,你可以直接修改web服务的启动命令:
services:
  web:
    # 保留原有其他配置不变,仅替换command字段为以下内容
    command: sh -c "python -c 'import socket, time; while True: try: s = socket.create_connection((\"db\", 5432)); s.close(); break; except Exception: time.sleep(1)' && gunicorn --bind 0.0.0.0:8000 app.wsgi:application -k eventlet"
  • 执行以下命令清理原有Docker资源:
# 停止并删除现有容器、网络,如dbdata有重要数据请去掉-v参数
docker-compose down -v
# 清理无用Docker网络缓存
docker network prune -f
  • 重启Windows下的Docker Desktop,彻底重置网络状态。
  • 重新构建启动服务:
docker-compose up --build

如果仍有问题可以临时修改.env中的DB_HOST为host.docker.internal,DB_PORT为32768,通过宿主机端口直接连接数据库临时验证业务逻辑,再排查网络问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 18:42:02