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

非容器化Django无法连接Docker内运行的PostgreSQL数据库问题

核心原因

你的Django应用直接运行在宿主机本地,并未加入Docker Compose创建的专属内部网络,而db是Docker Compose为PostgreSQL容器分配的内部服务域名,仅能在该Compose项目同网络内的容器之间解析使用,宿主机本地运行的程序无法识别该域名。
你可以用DBeaver正常连接,是因为DBeaver配置的数据库地址是127.0.0.1/localhost,走的是docker-compose映射到宿主机的5432端口。

解决步骤

  • 修改Django项目的环境变量配置文件(通常为项目根目录下的.env文件),将DB_HOST的取值从db修改为127.0.0.1,DB_PORT保持5432即可,数据库名称、用户名、密码和docker-compose.yml中配置的保持一致。
  • 若你的宿主机本地原本就运行了PostgreSQL服务占用了5432端口,可以修改docker-compose.yml中db服务的端口映射规则为5433:5432,再将Django环境变量中的DB_PORT改为5433即可。
  • 修改完成后可先在宿主机命令行执行以下命令验证连通性:
psql -h 127.0.0.1 -p 5432 -U postgres -d postgres

输入密码postgres可以正常登录的情况下,再启动Django应用即可正常连接数据库。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:39:02