【问题标题】:Unable to connect containerized app to containerized postgres, receiving dial tcp connection refused error无法将容器化应用程序连接到容器化 postgres,接收拨号 tcp 连接被拒绝错误
【发布时间】:2018-12-26 21:25:18
【问题描述】:

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

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

dial tcp 127.0.0.1:8080: connect: connection refused 

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


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

  • 去应用,端口信息: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连接两个容器,但没有帮助。


我们将不胜感激!

【问题讨论】:

标签: postgresql docker go


【解决方案1】:

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

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

【讨论】:

  • 您的第三个解决方案非常有效。非常感谢!
猜你喜欢
  • 2022-07-21
  • 2020-12-31
  • 2021-04-12
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-11
  • 2018-09-29
相关资源
最近更新 更多