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

WSL环境下Django无法通过主机名连接Docker PostgreSQL容器

解决WSL中Django无法连接Docker容器内PostgreSQL的问题

错误原因

WSL环境无法解析Docker容器名称postgres——容器名称仅能在Docker自身的内部网络(如默认的bridge网络)中被解析,而运行在WSL中的Django进程不在这个网络域内,因此出现域名解析失败的错误。

可行解决方案

方案1:使用Docker Desktop提供的特殊域名host.docker.internal

Docker Desktop为WSL环境提供了host.docker.internal这个特殊域名,它会自动指向Windows主机的IP,而你已经通过-p 5432:5432将容器的5432端口映射到了Windows主机,因此WSL可以通过这个域名访问容器。

修改你的DATABASE_URL配置:

DATABASE_URL=postgres://postgres:postgres@host.docker.internal:5432/postgres

方案2:使用localhost(WSL 2环境适用)

在WSL 2中,localhost已经默认映射到Windows主机的网络端口,因此直接替换host为localhost也能生效:

DATABASE_URL=postgres://postgres:postgres@localhost:5432/postgres

额外检查项

  • 确认Docker Desktop已开启Enable the WSL 2 based engine(设置->General中)
  • 确保Docker容器处于运行状态,可通过docker ps命令验证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 12:32:06