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

使用Go Gorm连接Docker中PostgreSQL失败问题排查

解决Docker容器间Gorm连接PostgreSQL的端口问题

问题原因

Docker Compose中,服务间的通信依赖容器内部端口,而非宿主机映射的端口。你配置的"6543:5432"是把宿主机的6543端口映射到Postgres容器的5432端口——这个映射是给宿主机(比如你的DBeaver)使用的,容器之间通信时直接用容器内部的5432端口即可。

解决方案

1. 保留Docker Compose的端口映射

无需修改Postgres服务的端口配置,保持原配置:

ports:
  - "6543:5432"

这样宿主机用6543端口连接Docker里的Postgres,不会和本地已运行的PostgreSQL(占用5432端口)产生冲突。

2. 修改Go代码的DSN配置

将DSN中的端口改为容器内部的5432,而非宿主机映射的6543:

dsn := "host=postgres port=5432 user=postgres password=password dbname=test sslmode=disable timezone=UTC connect_timeout=5"

因为patients-service容器和postgres容器同属Docker Compose的默认网络,直接用服务名postgres就能解析到Postgres容器的IP,且容器内部PostgreSQL始终监听5432端口。

3. DBeaver连接配置

用以下参数连接Docker中的PostgreSQL:

  • 主机:localhost
  • 端口:6543
  • 用户名:postgres
  • 密码:password
  • 数据库:test
    这样就能绕过本地的PostgreSQL,直接连接到Docker容器里的实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 03:35:15