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

Docker Compose部署的Django无法连接本地PostgreSQL,求排查

Django容器连接本地PostgreSQL失败排查方案

问题描述

通过Docker Compose部署Django应用后,无法访问本地主机的PostgreSQL数据库,已执行以下操作:

  • 在pg_hba.conf中添加规则:host all all 172.17.0.1/16 md5
  • 在postgresql.conf中将listen_addresses修改为*
  • Django的db_host设置为host.docker.internal
  • docker-compose.yml的web服务配置了extra_hosts:
    services:
      web:
        extra_hosts:
          - "host.docker.internal:host-gateway"
    
  • 执行sudo systemctl restart postgresql重启服务

但仍收到连接超时错误:

could not connect to server: Connection timed out
Is the server running on host "host.docker.internal" (172.17.0.1) and accepting
TCP/IP connections on port 5432?

排查与解决步骤

1. 确认PostgreSQL是否正确监听全网段

执行以下命令检查端口监听状态:

ss -tulpn | grep 5432

如果输出只有127.0.0.1:5432,说明postgresql.conf的修改未生效:

  • 确认修改的是PostgreSQL实际使用的配置文件(比如Ubuntu路径为/etc/postgresql/[版本号]/main/postgresql.conf)
  • 重启PostgreSQL后再次验证监听状态

2. 检查本地防火墙规则

本地主机的防火墙可能拦截了容器的连接请求,针对Docker网段开放5432端口:

  • Ubuntu/Debian(ufw):
    sudo ufw allow from 172.17.0.0/16 to any port 5432
    sudo ufw reload
    
  • CentOS/RHEL(firewalld):
    sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="172.17.0.0/16" port port="5432" protocol="tcp" accept' --permanent
    sudo firewall-cmd --reload
    

3. 验证pg_hba.conf规则顺序

pg_hba.conf的规则是从上到下匹配,确保添加的172.17.0.1/16规则在更严格的规则(比如仅允许127.0.0.1)之前。
另外,若自定义了Docker网络,需先通过docker network inspect bridge查看实际子网段,再调整pg_hba.conf的对应规则。

4. 在容器内直接测试连接

进入Django容器,用psql直接测试连接,定位具体错误:

# 进入容器
docker exec -it [你的web容器名称] bash
# 安装psql(若容器内未安装)
apt update && apt install -y postgresql-client
# 测试连接
psql -h host.docker.internal -U [数据库用户名] -d [数据库名]
  • 若提示认证失败:检查pg_hba.conf规则或数据库密码
  • 若仍超时:重点排查防火墙或PostgreSQL监听配置

5. 确认Docker版本支持(Linux环境)

host.docker.internal在Linux环境需要Docker 20.10及以上版本,执行docker --version确认版本,若版本过低需升级Docker。

内容的提问来源于stack exchange,提问作者mohamed naser

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:12:56