首页 > 后端开发 > Golang > 尽管 pgAdmin 连接成功,为什么我的 Go 应用程序拒绝连接到我的 Docker Compose Postgres 数据库?

尽管 pgAdmin 连接成功,为什么我的 Go 应用程序拒绝连接到我的 Docker Compose Postgres 数据库?

Susan Sarandon
发布: 2024-12-31 16:03:10
原创
194 人浏览过

Why is my Go application refusing a connection to my Docker Compose Postgres database, despite pgAdmin connecting successfully?

Docker-Compose Postgres 连接被拒绝:解决连接问题

在使用 Postgres 的 Docker-Compose 设置中,您描述了一个问题:可以使用 pg-admin 连接到 Postgres,但在尝试从以下位置连接时遇到连接问题Go。

问题源于您在 Go 代码中引用数据库主机名的方式。您使用 POSTGRES_HOST 作为 postgres,这是 Docker-Compose 配置中 Postgres 的容器/服务名称。但是,在 Go 代码中,您正在连接到数据库,这是数据库服务的实际容器名称。

要解决此问题,您有两个选项:

选项1:更改 Docker-Compose 中的容器名称

将 docker-compose.yaml 文件中数据库服务的名称从 database 更改为postgres。这将使容器名称和您在 Go 代码中使用的主机名匹配。

选项 2:显式主机名字段

或者,您可以添加显式主机名Docker-Compose 配置中数据库服务的字段:

database:
  build: database
  restart: always
  hostname: postgres
登录后复制

这设置数据库容器的主机名到 postgres,它与您在 Go 代码中引用的主机名相匹配。

其他注意事项

此外,您可能需要考虑在 Docker 中创建专用网络 -编写配置以确保容器之间能够安全、高效地通信。操作方法如下:

在 docker-compose.yaml 文件中,为每个应使用专用网络的服务添加一个网络部分,如下所示:

database:
  # ...

  networks:
    - mynet

backend:
  # ...

  networks:
    - mynet
登录后复制

然后,定义docker-compose.yaml 文件末尾的网络:

networks:
  mynet:
    name: my-shared-db-network
登录后复制

这将创建一个名为的新网络您的容器可以使用 my-shared-db-network 进行通信。

通过实施这些解决方案之一,您应该能够在 Docker-Compose 设置中从 Go 成功连接到 Postgres 数据库。

以上是尽管 pgAdmin 连接成功,为什么我的 Go 应用程序拒绝连接到我的 Docker Compose Postgres 数据库?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板