gpt4 book ai didi

postgresql - 无法将容器化应用程序连接到容器化 postgres,接收到拨号 tcp 连接被拒绝的错误

转载 作者:IT王子 更新时间:2023-10-29 01:53:57 26 4
gpt4 key购买 nike

这个社区是我解决这个问题的最后手段,因为我已经为此奋斗了几个小时。

我有一个在一个容器中运行的 go 应用程序,在另一个容器中我正在运行一个 postgres 数据库。只要 我的 postgres 在容器中,并且我的 go 应用程序像往常一样在本地运行,我就可以从我的 go 应用程序连接到 postgres 数据库。但是,当我的 go 应用程序尝试从 docker 容器中访问 postgres 时,我收到以下错误:

dial tcp 127.0.0.1:8080: connect: connection refused 

下面我尝试提供足够的信息,但如果需要,我很乐意添加更多信息。


我有 2 个使用以下端口运行的 docker 容器:

  • go应用,端口信息:8081/tcp -> 0.0.0.0:8081
  • postgres 数据库,端口信息:5432/tcp -> 0.0.0.0:8080

我正在运行 go 应用:

docker run -it --rm --name gographqlserver --link postgresdb:postgres -d -p 8081:8081 gogogopher;

和 postgres 数据库:

docker run -it --rm --name postgresdb -e POSTGRES_PASSWORD=hello123 -d -p 8080:5432 postgresimage;

两个容器都可以毫无问题地启动。


我也曾尝试在 docker network连接两个容器,但这没有帮助。


我们将不胜感激!

最佳答案

您在容器内使用的 localhost 地址与您的主机地址不同。您应该改为执行以下操作之一:

  • 使用来自应用程序容器的实际主机的 IP
  • 使用 postgresdb 容器的 IP 和 native 端口 (5432)。您可以使用 docker inspect postgresdb 发现此 IP。
  • 将两个容器连接到同一网络时,使用 postgresdb 作为主机名和 native 端口 (5432)

关于postgresql - 无法将容器化应用程序连接到容器化 postgres,接收到拨号 tcp 连接被拒绝的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51410806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com