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

pokxtpni  于 5个月前  发布在  Spring
关注(0)|答案(1)|浏览(41)

我在尝试使用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:驱动程序:网桥

数据库容器

database:
  image: postgis/postgis
  container_name: postgresql
  networks:
    - mynetwork
  environment:
    - POSTGRES_USER=admin
    - POSTGRES_PASSWORD=admin
    - POSTGRES_DB=mydb
  ports:
    - "5432:5432"
  volumes:
    - "./datadb:/var/lib/postgresql/data"

字符串

  • Spring docker-compose文件

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

- SPRING_DATASOURCE_URL=jdbc:postgresql://postgresql:5432/mydb
     - SPRING_DATASOURCE_USERNAME=admin
     - SPRING_DATASOURCE_PASSWORD=admin
     - SPRING_JPA_HIBERNATE_DDL_AUTO=update
  depends on: 
     - database


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

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文件,你可以在你的情况下使用:

version: '3'

services:
  backend:
    image: "spring-application"
    build:
      context: . // Dockerfile of back-end have to be in the same context path as this compose file
      dockerfile: Dockerfile
    container_name: "spring-application"
    ports:
      - "8085:8085"
    depends_on:
      - "database"
    environment:
      - "SPRING_DATASOURCE_URL=jdbc:postgresql://database:5432/mydb"
      - "SPRING_DATASOURCE_USERNAME=admin"
      - "SPRING_DATASOURCE_PASSWORD=admin"
      - "SPRING_JPA_HIBERNATE_DDL_AUTO=update"
  database:
    image: postgis/postgis
    container_name: postgresql
    environment:
    - POSTGRES_USER=admin
    - POSTGRES_PASSWORD=admin
    - POSTGRES_DB=mydb
    ports:
      - "5432:5432"
    volumes:
      - "./datadb:/var/lib/postgresql/data"

字符串

相关问题