spring 使用Docker Compose运行Sping Boot 应用程序时出现连接拒绝错误

pokxtpni  于 2024-01-05  发布在  Spring
关注(0)|答案(1)|浏览(144)

我在尝试使用Docker Compose与PostgreSQL容器沿着运行Sping Boot 应用程序时遇到了一个问题。Sping Boot 应用程序无法连接到PostgreSQL容器,并且我一直收到以下错误:

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

我使用两个独立的Docker Compose文件,一个用于Sping Boot 应用程序,另一个用于PostgreSQL容器,并且我在同一个网络中声明了容器。
在Sping Boot 应用程序属性中,我在PostgreSQL URL中使用了正确的PostgreSQL容器名称:

  • application.properties文件

spring.jpa.hibernate.ddl-auto=update spring.更新.url=jdbc:postgresql://postgresql:5432/mydb spring.更新.username=admin spring.更新.password=admin

  • 数据库docker-compose文件

版本:“% 2”服务:
网络:mynetwork:驱动程序:网桥

数据库容器

  1. database:
  2. image: postgis/postgis
  3. container_name: postgresql
  4. networks:
  5. - mynetwork
  6. environment:
  7. - POSTGRES_USER=admin
  8. - POSTGRES_PASSWORD=admin
  9. - POSTGRES_DB=mydb
  10. ports:
  11. - "5432:5432"
  12. volumes:
  13. - "./datadb:/var/lib/postgresql/data"

字符串

  • Spring docker-compose文件

version:'2' services:backend:build:. container_name:spring-application ports:- 8085:8085 networks:- mynetwork environment:

  1. - SPRING_DATASOURCE_URL=jdbc:postgresql://postgresql:5432/mydb
  2. - SPRING_DATASOURCE_USERNAME=admin
  3. - SPRING_DATASOURCE_PASSWORD=admin
  4. - SPRING_JPA_HIBERNATE_DDL_AUTO=update
  5. depends on:
  6. - database


网络:mynetwork:驱动程序:网桥
我还在pg_hba.conf文件中添加了这一行,并重新设置了postgresql容器:

  1. host all all 0.0.0.0/0 trust


尽管有这些配置,连接还是被拒绝,Sping Boot 应用程序无法启动。
我错过了什么?任何想法,请
解决这个问题的可能方法,请?

z2acfund

z2acfund1#

通常这种员工(数据库+后端应用程序)一起放在同一个docker-compose文件中,因为back-end依赖于database,更灵活,更容易维护。另外docker-compose默认设置一个网络,更多的细节你可以找到Networking-Compose。正如我在问题的评论中建议的那样,你应该只有一个单一的docker-compose文件,一切都会很好地工作。
作为一个例子的docker-compose文件,你可以在你的情况下使用:

  1. version: '3'
  2. services:
  3. backend:
  4. image: "spring-application"
  5. build:
  6. context: . // Dockerfile of back-end have to be in the same context path as this compose file
  7. dockerfile: Dockerfile
  8. container_name: "spring-application"
  9. ports:
  10. - "8085:8085"
  11. depends_on:
  12. - "database"
  13. environment:
  14. - "SPRING_DATASOURCE_URL=jdbc:postgresql://database:5432/mydb"
  15. - "SPRING_DATASOURCE_USERNAME=admin"
  16. - "SPRING_DATASOURCE_PASSWORD=admin"
  17. - "SPRING_JPA_HIBERNATE_DDL_AUTO=update"
  18. database:
  19. image: postgis/postgis
  20. container_name: postgresql
  21. environment:
  22. - POSTGRES_USER=admin
  23. - POSTGRES_PASSWORD=admin
  24. - POSTGRES_DB=mydb
  25. ports:
  26. - "5432:5432"
  27. volumes:
  28. - "./datadb:/var/lib/postgresql/data"

字符串

展开查看全部

相关问题