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中文网其他相关文章!