首页 >后端开发 >Golang >为什么我的 Go 应用程序在连接到 Docker Compose Postgres 数据库时出现'连接被拒绝”错误?

为什么我的 Go 应用程序在连接到 Docker Compose Postgres 数据库时出现'连接被拒绝”错误?

Barbara Streisand
Barbara Streisand原创
2024-12-21 01:04:11183浏览

Why Does My Go Application Get a

Docker Compose Postgres 连接拒绝

问题:

尝试建立数据库连接时从 转到 Docker Compose 上运行的 Postgres 数据库时,出现错误“拨号 tcp 127.0.0.1:5432: connect: 连接被拒绝” 发生。

解决方案:

问题源于连接字符串中错误的主机名引用。

主机名引用:

数据库主机名在“POSTGRES_HOST”环境变量中被引用为“postgres”。但是,docker-compose 文件中数据库的容器/服务名称是“database”。

解决方案:

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

  1. 更改容器/服务名称: 在 docker-compose 中文件中,将“database”服务名称更改为“postgres”。
  2. 添加显式主机名: 在 docker-compose 文件中的“database”服务中添加“hostname”字段,明确将其设置为“postgres”。

网络配置(可选):

为了改善服务之间的隔离和通信,建议为数据库和应用程序容器创建专用网络。为此:

  1. 为每个应使用共享网络的服务添加“网络”配置。
  2. 在 docker-compose 文件末尾使用名称定义网络和可选的选项。

示例:

database:
  # ...

  networks:
    - mynet

backend:
  # ...

  networks:
    - mynet

networks:
  mynet:
    name: my-shared-db-network

以上是为什么我的 Go 应用程序在连接到 Docker Compose Postgres 数据库时出现'连接被拒绝”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

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