登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-13 11:00:35 457浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《无法将容器化应用程序连接到容器化 postgres,收到拨号 tcp 连接拒绝错误》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

问题内容

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

我有一个 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 和本机端口 (5432)。您可以使用 docker 检查 postgresdb 发现此 IP。
  • 将两个容器连接到同一网络时,使用 postgresdb 作为主机名和本机端口 (5432)

终于介绍完啦!小伙伴们,这篇关于《无法将容器化应用程序连接到容器化 postgres,收到拨号 tcp 连接拒绝错误》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>