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

Docker环境下Django无法连接PostgreSQL数据库问题求助

Docker环境下Django无法连接PostgreSQL的解决方案

问题分析

错误提示connection failed: could not receive data from server: No route to host的核心原因有两点:

  1. 使用容器固定IP作为数据库主机,Docker容器IP可能随重启变化,且跨网络场景下无法访问
  2. Django容器(skiller)未加入PostgreSQL所在的skillernet网络,导致两者不在同一网络环境,无法互通

具体修复步骤

1. 修改.env文件的数据库主机配置

将.env里的POSTGRES_HOST从固定IP替换为PostgreSQL服务名postgres(Docker Compose同一网络内可通过服务名直接解析):

POSTGRES_DB=ibm_skiller
POSTGRES_PASSWORD=mYP@sSw0rd
POSTGRES_USER=ibm_skiller
POSTGRES_HOST=postgres  # 替换原172.19.0.2
POSTGRES_PORT=5432

2. 让Django容器加入同一网络

在docker-compose.yml中给skiller服务添加networks配置,使其加入skillernet网络:

skiller:
  # 保留原有其他配置...
  networks:
    - skillernet

3. 重启容器生效

执行命令重启所有服务,让新配置生效:

docker-compose down
docker-compose up -d

额外验证步骤

如果重启后仍有问题,可进入Django容器测试网络连通性:

docker exec -it skiller ping postgres

若能正常ping通,说明网络无问题,再检查Django是否正确加载了.env中的数据库配置变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 06:02:52