我正在尝试连接运行在 Docker 引擎 20 上的 macOS M1 上的 Directus 9 的本地实例,与 AWS RDS Postgres 15 进行连接。
我能够使用 Postico 在本地连接到 RDS 数据库,因此通过 VPC 的公共远程连接是正常工作的。我还能够连接到我的本地 Postgres 数据库 host.docker.internal
我尝试在 RDS 配置中使用参数组来不需要加密连接,设置 rds.force_ssl = 0,但并没有起作用。
当我尝试运行 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":
我相信这意味着生产Postgres数据库不允许非加密连接。
我已经克隆了Directus repo并使用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
我认为在RDS上无法更改pg_hba.conf文件,也不应该将其编辑或视为解决方案。
错误的原因可能是docker镜像没有安装SSL或其他原因吗?
我使用了https://github.com/directus/directus提供的所有Dockerfile和文件。
对于这个错误,有什么可能的原因和解决方案吗?
psql
。它是免费的,随PostgreSQL一起提供,并且是最熟悉的工具,对于那些能够最好地帮助您的人来说。它默认首选使用SSL,但您可以通过设置环境变量PGSSLMODE=disable或在连接字符串中包含 'sslmode=disable' 来禁用它。 - jjanes