【问题标题】:Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections检查主机名和端口是否正确以及 postmaster 是否接受 TCP/IP 连接
【发布时间】:2020-08-19 00:38:56
【问题描述】:

我在放弃 docker-compose 时遇到以下错误。

springbootapp    | org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
springbootapp    |      at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:280) ~[postgresql-42.2.8.jar!/:42.2.8]
springbootapp    |      at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) ~[postgresql-42.2.8.jar!/:42.2.8]
springbootapp    |      at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195) ~[postgresql-42.2.8.jar!/:42.2.8]
springbootapp    |      at org.postgresql.Driver.makeConnection(Driver.java:458) ~[postgresql-42.2.8.jar!/:42.2.8]
springbootapp    |      at org.postgresql.Driver.connect(Driver.java:260) ~[postgresql-42.2.8.jar!/:42.2.8]
springbootapp    |      at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-3.4.2.jar!/:na]
springbootapp    |      at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:354) ~[HikariCP-3.4.2.jar!/:na]
springbootapp    |      at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202) ~[HikariCP-3.4.2.jar!/:na]
springbootapp    |      at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:473) [HikariCP-3.4.2.jar!/:na]
springbootapp    |      at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:554) [HikariCP-3.4.2.jar!/:na]
springbootapp    |      at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) [HikariCP-3.4.2.jar!/:na]
springbootapp    |      at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) [HikariCP-3.4.2.jar!/:na]
springbootapp    |      at org.flywaydb.core.internal.jdbc.JdbcUtils.openConnection(JdbcUtils.java:56) [flyway-core-6.0.8.jar!/:na]
springbootapp    |      at org.flywaydb.core.internal.jdbc.JdbcConnectionFactory.<init>(JdbcConnectionFactory.java:80) [flyway-core-6.0.8.jar!/:na]
springbootapp    |      at org.flywaydb.core.Flyway.execute(Flyway.java:438) [flyway-core-6.0.8.jar!/:na]
springbootapp    |      at org.flywaydb.core.Flyway.migrate(Flyway.java:149) [flyway-core-6.0.8.jar!/:na]
springbootapp    |      at org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer.afterPropertiesSet(FlywayMigrationInitializer.java:65) [spring-boot-autoconfigure-2.2.6.RELEASE.jar!/:2.2.6.RELEASE]

Dockerfile:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
EXPOSE 8082
RUN mkdir -p /app/
RUN mkdir -p /app/logs/
ADD target/household-0.0.1-SNAPSHOT.jar /app/app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=container", "-jar", "/app/app.jar"]

docker-compose.yml:

version: '3.2'
services:
postgres:
    image: postgres:latest
    network_mode: bridge
    container_name: postgres
    volumes:
    - postgres-data:/var/lib/postgresql/data
    expose:
    - 5432
    ports:
    - 5434:5434
    environment:
        - POSTGRES_PASSWORD=
        - POSTGRES_USER=
        - POSTGRES_DB=test
    restart: unless-stopped
# APP*****
springbootapp:
    image: springbootapp:latest
    network_mode: bridge
    container_name: springbootapp
    expose:
    - 8080
    ports:
    - 8080:8080
    restart: unless-stopped
    depends_on:
    - postgres
    links:
    - postgres
volumes:
postgres-data:

【问题讨论】:

  • 嗨 Keerthana,请帮助我们帮助您:您能否描述一下您在做什么以及触发错误的原因是什么?仅仅删除一些错误消息可能不是接收答案的最佳方式。无论如何:欢迎加入。
  • @MichaelA 感谢您的回复。我正在尝试 Dockerize 与 Postgres 集成的 Spring Boot 应用程序。当我尝试升级服务时遇到这个问题。
  • 如何配置应用程序以指向数据库?您能否将所有代码重新格式化为代码块,并删除演示特定问题所不需要的任何细节?
  • 要从你的 spring-boot 应用程序连接到 postgresql,你需要使用正确的主机名。给定您的 docker-compose 配置,即postgres,而不是localhost

标签: java postgresql spring-boot docker dockerfile


【解决方案1】:

我有同样的问题。解决方法很简单。

  • 首先打开 docker 应用,

在终端进程中;

  • 然后你必须去docker-compose.yml所在的目录
    文件的位置。

  • 然后写docker-compose up

  • 接下来,打开 pgAdmin 应用并为你的 spring 项目选择 db,

  • 接下来,输入docker-compose.yml中找到的密码和用户名 (用户名:image,密码:POSTGRES_PASSWORD),

  • 最后运行spring boot项目。

【讨论】:

    【解决方案2】:

    该错误肯定是由于 postgres 未正确运行或应用程序无法与 postgres 通信。使用下面的 docker-compose 文件并检查。

    version: '2'
    services:
        postgresql:
            image: postgres:10.4
            volumes:
                - ./postgresql/:/var/lib/postgresql/data/
            environment:
                - POSTGRES_USER=someuser
                - POSTGRES_PASSWORD=
            ports:
                - 5432:5432
    

    您可以随时使用以下命令检查 db 是否正在接受连接。

    psql -h [HostIP] -U [db_user] -d [db_name]
    

    【讨论】:

    • 我收到错误 psql:错误:无法连接到服务器:无法连接到服务器:连接被拒绝服务器是否在主机“..*.*”上运行并接受端口 5432 上的 TCP/IP 连接?
    • 这绝对意味着您尝试连接的 postgres 没有运行。你把 postgres 容器打开了吗?
    • 该错误表明OP正在尝试从他的spring boot应用程序连接到localhost:5432,这是错误的地址。
    猜你喜欢
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 2018-12-17
    • 2021-04-03
    • 2022-07-09
    相关资源
    最近更新 更多