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

Docker中运行pytest时PostgreSQL主机解析失败及CI连接问题

问题原因分析

本地用db_1作为HOST连接失败的原因

  • Docker Compose会为所有服务创建专属内部网络,容器之间可通过服务名/容器名(如db_1)互相访问,这个主机名解析仅在该内部网络中生效。
  • 直接在本地宿主机运行pytest时,宿主机不属于Docker Compose的内部网络,无法识别db_1这个主机名,因此出现无法解析地址的错误。

本地用localhost成功但GitHub Actions失败的原因

本地成功的本质

你本地用localhost能成功,并非Docker容器里的PostgreSQL在工作——你的docker-compose.yml中db服务的端口配置完全错误:

ports:
    - "5433:80"

PostgreSQL默认监听端口是5432,而你把容器的80端口(HTTP端口,PostgreSQL不会使用)映射到宿主机5433,这个映射毫无意义。实际你本地pytest连接的是宿主机自身安装的PostgreSQL服务(默认端口5432),和Docker容器无关。

GitHub Actions失败的原因

CI环境的宿主机(GitHub Runner)没有预装PostgreSQL服务,同时你的Docker容器PostgreSQL因为端口映射错误,没有将5432端口暴露到宿主机。此时用localhost:5432连接,既找不到本地PostgreSQL,也无法访问容器里的服务,自然出现连接拒绝。

额外的配置问题

你的SQLALCHEMY_DATABASE_URI格式不符合PostgreSQL规范,正确格式应为:

postgresql://${DB_USER}:${PASSWORD}@${HOST}:${PORT}/${DATABASE}

而非当前的postgresql://${HOST}/${DATABASE}?user=${DB_USER}&password=${PASSWORD}格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:20:27