我正在尝试连接在macOS M1上运行在Docker引擎20上的Directus 9的本地实例到AWS RDS Postgres 15。
我能够连接到RDS数据库与posto本地ok,所以通过VPC的公共远程连接正在工作。我也能够连接到我的本地Postgres数据库在host.docker.internal
我已经尝试在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":
我相信这意味着生产Postgres db不允许非加密连接。
我已经克隆了Directus repo,并使用docker从docker-compose构建。yml。我没有使用.env文件进行配置,而是将所有内容放入这个组合文件中。我今天刚接触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或其他什么?
我使用了所有提供的Dockerfile和文件从https://github.com/directus/directus
关于这个错误的可能原因的解决方案有什么想法吗?
解决方案:
- 存在SSL问题,可能与在RDS中使用自签名证书有关,我在docker-compose中设置了以下ENV变量。
DB_SSL__REJECT_UNAUTHORIZED:假
解决了这个问题。然后…
- RDS数据库的用户名错误,数据库用户应该如下所示:postgres ->postgres
我认为你设置的DB_CLIENT
变量是错误的。根据Directus官方文档https://docs.directus.io/self-hosted/config-options.html#config-yaml
pg
在我的例子中,这是因为RDS的SSL设置,即RDS .force_ssl