请检查主机名和端口是否正确,并确保 postmaster 接受 TCP/IP 连接。

huangapple 未分类评论49阅读模式
英文:

Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections

问题

  1. 我在执行 docker-compose up 时遇到以下错误。
  2. springbootapp | org.postgresql.util.PSQLException: 拒绝连接到 localhost:5432。请检查主机名和端口是否正确,并且 postmaster 是否接受 TCP/IP 连接。
  3. springbootapp | at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:280) ~[postgresql-42.2.8.jar!/:42.2.8]
  4. springbootapp | at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) ~[postgresql-42.2.8.jar!/:42.2.8]
  5. springbootapp | at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195) ~[postgresql-42.2.8.jar!/:42.2.8]
  6. springbootapp | at org.postgresql.Driver.makeConnection(Driver.java:458) ~[postgresql-42.2.8.jar!/:42.2.8]
  7. springbootapp | at org.postgresql.Driver.connect(Driver.java:260) ~[postgresql-42.2.8.jar!/:42.2.8]
  8. springbootapp | at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-3.4.2.jar!/:na]
  9. springbootapp | at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:354) ~[HikariCP-3.4.2.jar!/:na]
  10. springbootapp | at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202) ~[HikariCP-3.4.2.jar!/:na]
  11. springbootapp | at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:473) [HikariCP-3.4.2.jar!/:na]
  12. springbootapp | at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:554) [HikariCP-3.4.2.jar!/:na]
  13. springbootapp | at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) [HikariCP-3.4.2.jar!/:na]
  14. springbootapp | at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) [HikariCP-3.4.2.jar!/:na]
  15. springbootapp | at org.flywaydb.core.internal.jdbc.JdbcUtils.openConnection(JdbcUtils.java:56) [flyway-core-6.0.8.jar!/:na]
  16. springbootapp | at org.flywaydb.core.internal.jdbc.JdbcConnectionFactory.<init>(JdbcConnectionFactory.java:80) [flyway-core-6.0.8.jar!/:na]
  17. springbootapp | at org.flywaydb.core.Flyway.execute(Flyway.java:438) [flyway-core-6.0.8.jar!/:na]
  18. springbootapp | at org.flywaydb.core.Flyway.migrate(Flyway.java:149) [flyway-core-6.0.8.jar!/:na]
  19. springbootapp | at org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer.afterPropertiesSet(FlywayMigrationInitializer.java:65) [spring-boot-autoconfigure-2.2.6.RELEASE.jar!/:2.2.6.RELEASE]
  20. **Dockerfile:**
  21. FROM openjdk:8-jdk-alpine
  22. VOLUME /tmp
  23. EXPOSE 8082
  24. RUN mkdir -p /app/
  25. RUN mkdir -p /app/logs/
  26. ADD target/household-0.0.1-SNAPSHOT.jar /app/app.jar
  27. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=container", "-jar", "/app/app.jar"]
  28. **docker-compose.yml:**
  29. version: '3.2'
  30. services:
  31. postgres:
  32. image: postgres:latest
  33. network_mode: bridge
  34. container_name: postgres
  35. volumes:
  36. - postgres-data:/var/lib/postgresql/data
  37. expose:
  38. - 5432
  39. ports:
  40. - 5434:5434
  41. environment:
  42. - POSTGRES_PASSWORD=
  43. - POSTGRES_USER=
  44. - POSTGRES_DB=test
  45. restart: unless-stopped
  46. # APP*****
  47. springbootapp:
  48. image: springbootapp:latest
  49. network_mode: bridge
  50. container_name: springbootapp
  51. expose:
  52. - 8080
  53. ports:
  54. - 8080:8080
  55. restart: unless-stopped
  56. depends_on:
  57. - postgres
  58. links:
  59. - postgres
  60. volumes:
  61. postgres-data:
英文:

I'm getting the below error while giving docker-compose up.

  1. 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.
  2. springbootapp | at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:280) ~[postgresql-42.2.8.jar!/:42.2.8]
  3. springbootapp | at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) ~[postgresql-42.2.8.jar!/:42.2.8]
  4. springbootapp | at org.postgresql.jdbc.PgConnection.&lt;init&gt;(PgConnection.java:195) ~[postgresql-42.2.8.jar!/:42.2.8]
  5. springbootapp | at org.postgresql.Driver.makeConnection(Driver.java:458) ~[postgresql-42.2.8.jar!/:42.2.8]
  6. springbootapp | at org.postgresql.Driver.connect(Driver.java:260) ~[postgresql-42.2.8.jar!/:42.2.8]
  7. springbootapp | at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-3.4.2.jar!/:na]
  8. springbootapp | at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:354) ~[HikariCP-3.4.2.jar!/:na]
  9. springbootapp | at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202) ~[HikariCP-3.4.2.jar!/:na]
  10. springbootapp | at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:473) [HikariCP-3.4.2.jar!/:na]
  11. springbootapp | at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:554) [HikariCP-3.4.2.jar!/:na]
  12. springbootapp | at com.zaxxer.hikari.pool.HikariPool.&lt;init&gt;(HikariPool.java:115) [HikariCP-3.4.2.jar!/:na]
  13. springbootapp | at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) [HikariCP-3.4.2.jar!/:na]
  14. springbootapp | at org.flywaydb.core.internal.jdbc.JdbcUtils.openConnection(JdbcUtils.java:56) [flyway-core-6.0.8.jar!/:na]
  15. springbootapp | at org.flywaydb.core.internal.jdbc.JdbcConnectionFactory.&lt;init&gt;(JdbcConnectionFactory.java:80) [flyway-core-6.0.8.jar!/:na]
  16. springbootapp | at org.flywaydb.core.Flyway.execute(Flyway.java:438) [flyway-core-6.0.8.jar!/:na]
  17. springbootapp | at org.flywaydb.core.Flyway.migrate(Flyway.java:149) [flyway-core-6.0.8.jar!/:na]
  18. 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:

  1. FROM openjdk:8-jdk-alpine
  2. VOLUME /tmp
  3. EXPOSE 8082
  4. RUN mkdir -p /app/
  5. RUN mkdir -p /app/logs/
  6. ADD target/household-0.0.1-SNAPSHOT.jar /app/app.jar
  7. ENTRYPOINT [&quot;java&quot;,&quot;-Djava.security.egd=file:/dev/./urandom&quot;,&quot;-Dspring.profiles.active=container&quot;, &quot;-jar&quot;, &quot;/app/app.jar&quot;]

docker-compose.yml:

  1. version: &#39;3.2&#39;
  2. services:
  3. postgres:
  4. image: postgres:latest
  5. network_mode: bridge
  6. container_name: postgres
  7. volumes:
  8. - postgres-data:/var/lib/postgresql/data
  9. expose:
  10. - 5432
  11. ports:
  12. - 5434:5434
  13. environment:
  14. - POSTGRES_PASSWORD=
  15. - POSTGRES_USER=
  16. - POSTGRES_DB=test
  17. restart: unless-stopped
  18. # APP*****
  19. springbootapp:
  20. image: springbootapp:latest
  21. network_mode: bridge
  22. container_name: springbootapp
  23. expose:
  24. - 8080
  25. ports:
  26. - 8080:8080
  27. restart: unless-stopped
  28. depends_on:
  29. - postgres
  30. links:
  31. - postgres
  32. volumes:
  33. postgres-data:

答案1

得分: 2

错误绝对是由于 PostgreSQL 未能正确运行或应用程序无法与 PostgreSQL 通信所致。请使用以下 Docker Compose 文件并进行检查:

  1. version: '2'
  2. services:
  3. postgresql:
  4. image: postgres:10.4
  5. volumes:
  6. - ./postgresql/:/var/lib/postgresql/data/
  7. environment:
  8. - POSTGRES_USER=someuser
  9. - POSTGRES_PASSWORD=
  10. ports:
  11. - 5432:5432

您始终可以使用以下命令检查数据库是否接受连接:

  1. psql -h [主机IP] -U [数据库用户] -d [数据库名称]
英文:

The error is definitely due to postgres is not running correctly or the app is not able to communicate to postgres. Use below docker-compose file and check.

  1. version: &#39;2&#39;
  2. services:
  3. postgresql:
  4. image: postgres:10.4
  5. volumes:
  6. - ./postgresql/:/var/lib/postgresql/data/
  7. environment:
  8. - POSTGRES_USER=someuser
  9. - POSTGRES_PASSWORD=
  10. ports:
  11. - 5432:5432

You can always use following command to check if db is accepting connection.

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

答案2

得分: 0

我遇到了同样的问题。解决方法很简单。

  • 首先打开 Docker 应用,

在终端进程中;

  • 然后你需要进入存放 docker-compose.yml 文件的目录。

  • 接着输入 docker-compose up

  • 接下来,打开 pgAdmin 应用并选择与你的 Spring 项目相关的数据库,

  • 然后,输入在 docker-compose.yml 中找到的用户名和密码
    (用户名:image,密码:POSTGRES_PASSWORD)。

  • 最后运行 Spring Boot 项目。

英文:

I had same problem. the solution is simple.

  • first open docker app,

in Terminal process;

  • then you have to go to the directory where the docker-compose.yml
    file is located.

  • then write docker-compose up

  • next, open pgAdmin app and choose db to your spring project,

  • next, enter the password and username found in docker-compose.yml
    (username: image, password: POSTGRES_PASSWORD),

  • finally run the spring boot project.

huangapple
  • 本文由 发表于 2020年5月4日 22:34:31
  • 转载请务必保留本文链接:https://java.coder-hub.com/61594731.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定