【问题标题】:Connection to 127.0.0.1:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections与 127.0.0.1:5432 的连接被拒绝。检查主机名和端口是否正确以及 postmaster 是否接受 TCP/IP 连接
【发布时间】:2020-04-24 08:21:26
【问题描述】:

我正在从 docker-compose 运行我的代码,它试图访问本地数据库 (postgres)。 每当我尝试运行时,都会出现此错误

Connection to 127.0.0.1:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.

但 postgres 正在端口 5432 上运行

这是sudo netstat -ltnp | grep postgres的结果

tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      1995/postgres

我在 ubunto 操作系统上使用 postgres v 10.9。

【问题讨论】:

  • 如果您尝试访问容器内的本地主机,那么它是容器的本地主机,而不是您的机器或任何其他容器。如果您的应用和数据库都在同一个 compose 中声明,请使用相同的网络,您可以使用容器名称。
  • 请在此处提供您的 docker compose 文件

标签: java postgresql docker ubuntu


【解决方案1】:

如果您尝试访问容器内的本地主机,那么它是容器的本地主机,而不是您的机器或任何其他容器。如果您的应用和数据库都在同一个 compose 中声明,请使用相同的网络,您可以使用容器名称

没错,但如果你在本地机器上安装了 Postgres,你可以绕过容器限制设置你机器的 IP,例如连接到 Postgres 到 :5432

如果仍然无法正常工作,请检查您的本地计算机上的 5432 端口是否有任何防火墙限制,并检查 Postgres 是否设置为从外部源接收数据。

另外这个例子只能在“家里”使用,我不建议在公司网络或任何生产环境中使用。

【讨论】:

  • 是否可以将 docker 配置为一种我不需要让 postgres 接受外部连接的方式??
  • @Hummingbird 您可以使用 docker-compose 选项 "network_mode: host" 或 docker 主机模式 - docs.docker.com/network/host。仍然建议仅用于开发环境。
猜你喜欢
  • 1970-01-01
  • 2020-08-19
  • 2020-08-09
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 2020-12-17
  • 2018-12-17
相关资源
最近更新 更多