首页 >后端开发 >Golang >Docker Compose Postgres 连接被拒绝:为什么 pgAdmin 可以工作但我的 Go 应用程序失败?

Docker Compose Postgres 连接被拒绝:为什么 pgAdmin 可以工作但我的 Go 应用程序失败?

Susan Sarandon
Susan Sarandon原创
2024-12-05 13:50:12374浏览

Docker Compose Postgres Connection Refused: Why Does pgAdmin Work But My Go App Fails?

[Docker Compose] Postgres 连接错误:解决“连接被拒绝”

问题:
尝试时与在 Docker Compose 中运行的 Postgres 数据库建立 Go 连接,错误“连接被拒绝”是尽管能够从 pg-admin 成功连接,但仍遇到此问题。

原因:
连接字符串将数据库主机名引用为“postgres”,它与 Docker Compose 中的服务名称相匹配。然而,实际的容器名称是“database”。

解决方案:
要解决此问题,请将 Docker Compose 文件中的数据库容器重命名为“postgres”或显式指定主机名:

database:
  build: database
  restart: always
  hostname: postgres  # Add this line

其他注意事项:

  • 网络:添加专用网络供多个容器服务进行通信可能会改善连接性。
  • 连接字符串: 确保 Go 代码中的连接字符串 (_str_) 包含正确的主机名:

    str := fmt.Sprintf("database://%s:%s@%s:%s/%s?sslmode=disable", user, pass, "postgres", port, dbname)  # Update the hostname to "postgres"

以上是Docker Compose Postgres 连接被拒绝:为什么 pgAdmin 可以工作但我的 Go 应用程序失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn