org.postgresql.util.PSQLException:致命:docker 中的主机没有 pg_hba.conf 条目

问题描述 投票:0回答:1

我创建了从 Spring Boot 应用程序到 docker 的连接,但出现错误

org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host

我使用了 org.postgresql.util.PSQLException: FATAL: no pg_hba.conf Entry for host 中的解决方案,并且附加了 ssl 查询参数,但它在

docker-compose.yml
:

中不起作用
services:
  belt-microservice:
    build: belt-microservices
    container_name: belt-microservice
    restart: always
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://db-belt:5432/belt_microservices?ssl=true&sslmode=require
    ports:
      - "8080:8080"
    depends_on:
      - db-belt
  db-belt:
    image: postgres
    container_name: db-belt
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=belt_microservices
      - PGDATA=/var/lib/postgresql/data/pgdata
    ports:
      - "5000:5432"
    volumes:
      - pgdata:/var/lib/postgresql/data
    restart: always
volumes:
  pgdata:

最终出现在

org.postgresql.util.PSQLException: The server does not support SSL.

我尝试将网络添加到

docker-compose.yml

networks:
  default:
    external: false

但这只会导致另一个错误

org.postgresql.util.PSQLException: The connection attempt failed.

如何让postgres容器支持SSL或者避免主机输入错误?

postgresql docker docker-compose
1个回答
0
投票

我解决了这个问题,在数据库服务配置中为

PGDATA
的文件夹添加了自定义名称,如本答案中

最后

docker-compose.yml
读作

services:
  belt-microservice:
    build: belt-microservices
    container_name: belt-microservice
    restart: always
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://db-belt:5432/belt_microservices
    ports:
      - "8080:8080"
    depends_on:
      - db-belt
  crossbelt-microservice:
    build: crossbelt-microservices
    container_name: crossbelt-microservice
    restart: always
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://db-crossbelt:5432/crossbelt_microservices
      - BELT_URL=http://belt-microservice:8080
    ports:
      - "8082:8082"
    depends_on:
      - db-crossbelt
      - belt-microservice
  report-microservice:
    build: report-microservices
    container_name: report-microservice
    restart: always
    ports:
      - "8083:8083"
  db-belt:
    image: postgres
    container_name: db-belt
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=belt_microservices
      - POSTGRES_HOST_AUTH_METHOD=trust
      - PGDATA=/var/lib/postgresql/data/belt/
    ports:
      - "5000:5432"
    restart: always
  db-crossbelt:
    image: postgres
    container_name: db-crossbelt
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=crossbelt_microservices
      - POSTGRES_HOST_AUTH_METHOD=trust
      - PGDATA=/var/lib/postgresql/data/crossbelt/
    ports:
      - "5001:5432"

不知道要不要加

POSTGRES_HOST_AUTH_METHOD=trust
,不推荐。

© www.soinside.com 2019 - 2024. All rights reserved.