Docker 无法连接到 Postgres RDS 错误:主机没有 pg_hba.conf 条目

dij*_*a8x 9 database postgresql amazon-rds docker directus

我正在尝试将 macOS M1 上的 Docker 引擎 20 上运行的 Directus 9 本地实例连接到 AWS RDS Postgres 15。

我可以使用 Postico 在本地正常连接到 RDS 数据库,因此通过 VPC 的公共远程连接正在运行。我还可以连接到位于 host.docker.internal 的本地 Postgres 数据库

我尝试在 RDS 配置中使用参数组来不需要加密连接。设置 rds.force_ssl = 0 不起作用。

当我尝试时出现以下错误run docker compose up

ERROR: no pg_hba.conf entry for host "XX.XXX.XX.XX", user "postrgres", database "EXAMPLEDB", no encryption
directus  |     err: {
directus  |       "type": "DatabaseError",
directus  |       "message": "no pg_hba.conf entry for host \"XX.XXX.XX.XX\", user \"postrgres\", database \"EXAMPLEDB\", no encryption",
directus  |       "stack":
Run Code Online (Sandbox Code Playgroud)

我相信这意味着生产 Postgres 数据库不允许非加密连接。

我克隆了 Directus 存储库并使用 docker 从 docker-compose.yml 进行构建。我没有使用 .env 文件进行配置,而是将所有内容放入此 compose 文件中。我今天刚接触 docker,还不完全理解如何正确编写此配置,我参考了本指南https://docs.directus.io/self-hosted/config-options.html#database

services:
  database:
    container_name: database
    image: postgis/postgis:13-master
    # Required when running on platform other than amd64, like Apple M1/M2:
    #platform: linux/amd64
    #volumes:
    # - ./data/database:/var/lib/postgresql/data2
    networks:
      - directus
    environment:
      POSTGRES_USER: 'directus'
      POSTGRES_PASSWORD: 'directus'
      POSTGRES_DB: 'directus'

  directus:
    environment:
      DB_CLIENT: 'postgres'
      DB_HOST: 'xxx.rds.amazonaws.com'
      DB_PORT: '5432'
      DB_DATABASE: 'XXXX'
      DB_USER: 'postrgres'
      DB_PASSWORD: 'XXX' 

   directus exited with code 1
Run Code Online (Sandbox Code Playgroud)

我认为不可能对 RDS 上的 pg_hba.conf 进行任何更改,并且不应对其进行编辑或将其视为解决方案。

错误的原因可能是docker镜像没有安装SSL或者什么的吗?

我使用了https://github.com/directus/directus提供的所有 Dockerfile 和文件

关于可能导致此错误的解决方案的任何想法?

Die*_*lez 0

我认为你设置的DB_CLIENT变量是错误的。它应该pg根据 Directus 官方文档https://docs.directus.io/self-hosted/config-options.html#config-yaml