【问题标题】:Spring boot docker - error while connecting to Postgres. org.postgresql.util.PSQLException: Connection to MYDOMAIN:5432 refusedSpring boot docker - 连接到 Postgres 时出错。 org.postgresql.util.PSQLException:连接到 MYDOMAIN:5432 被拒绝
【发布时间】:2023-01-08 01:13:56
【问题描述】:

我有一个连接到 Docker 中的 Postgres DB 的 Spring 启动应用程序的工作设置。当我将同一个 Spring boot 应用程序移至另一个 docker 容器时,该应用程序抛出异常。 Postgres 泊坞窗没有改变。可能出了什么问题?为什么同一个应用程序在 docker 外部工作,而在放入 docker 时不连接到 Postgres。

org.postgresql.util.PSQLException:连接到 MYDOMAIN:5432 被拒绝。检查主机名和端口是否正确,以及 postmaster 是否正在接受 TCP/IP 连接。

应用程序.properties

spring.datasource.url=jdbc:postgresql://MYDOMAIN:5432/

更新

当我将 MYDOMAIN 更改为托管 Postgres docker 的机器的公共 IP 地址时,它工作正常。但是为什么域名没有得到解析?

【问题讨论】:

    标签: postgresql spring-boot docker-compose


    【解决方案1】:

    因为 Docker 容器是一个隔离的环境,其中只有您的 spring boot 应用程序。所以在那个容器里面,没有 Postgres 在端口 5432 上运行。

    您可以按照 this link 中的说明创建一个 docker-compose 文件,您可以在该文件中将该文件中的 PostgreSQL Docker 容器寻址到您的 dockerized spring boot 应用程序。

    【讨论】:

    • 感谢您的回复。但我不清楚的是我没有使用“本地主机”,我正在使用 FQDN 访问 Postgres。 docker 容器不能进行外部调用和访问数据库吗?您共享的链接在同一个 docker-compose 中同时包含 Spring Boot 和 PG,但这不是我需要的 - 我有一个现有的 PG Docker 容器,我的 Spring Boot 应用程序必须连接到该容器。它在 docker 外部连接良好,但当移入 docker 时,它不连接。
    • 在您的 docker run 命令中使用 --network="host" ,然后您的 docker 容器中的 127.0.0.1 将指向您的 docker 主机。参考this post中的回答。
    猜你喜欢
    • 2020-10-11
    • 1970-01-01
    • 2020-12-31
    • 2019-10-19
    • 1970-01-01
    • 2020-01-19
    • 2018-07-03
    • 1970-01-01
    • 2019-06-06
    相关资源
    最近更新 更多