You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署PostgreSQL+Express,未配置SSL却报服务器不支持SSL连接

问题原因及解决方法

核心问题

你遇到的错误是因为Sequelize底层的pg驱动默认尝试以SSL方式连接PostgreSQL服务器,但你的PostgreSQL容器并未开启SSL支持。另外,你在Docker Compose的database服务中设置的PGSSLMODE=disable和PGREQUIRESSL=0是客户端环境变量,只对容器内部的PostgreSQL客户端(如psql)生效,无法控制PostgreSQL服务器是否启用SSL。

解决步骤

1. 修改Sequelize配置,明确禁用SSL

在你的Sequelize初始化代码中添加dialectOptions.ssl: false,强制客户端不使用SSL连接:

const sequelize = new Sequelize({
    username: process.env.DB_OWNER,
    password: process.env.DB_PASSWORD,
    host: process.env.DB_HOST,
    port: parseInt(process.env.DB_PORT!),
    database: process.env.DB_NAME,
    dialect: "postgres",
    dialectOptions: {
        ssl: false
    }
});

2. 检查环境变量配置

确认你的.env.development文件中没有设置DB_SSL=true或其他强制启用SSL的变量,如果有,将其改为DB_SSL=false或直接删除。

可选:开启PostgreSQL服务器SSL(非必要)

如果出于某些原因需要在Docker内部连接中使用SSL,可以修改Docker Compose的database服务,添加SSL相关配置(但本地容器间连接通常不需要):

services:
  database:
    image: postgres:latest
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=admin123
      - POSTGRES_DB=ticketsellermadrid_dev
      # 添加服务器端SSL启用参数
      - POSTGRES_SSL_CERT=/var/lib/postgresql/server.crt
      - POSTGRES_SSL_KEY=/var/lib/postgresql/server.key
    volumes:
      # 挂载自定义SSL证书文件到容器内
      - ./ssl/server.crt:/var/lib/postgresql/server.crt
      - ./ssl/server.key:/var/lib/postgresql/server.key

内容的提问来源于stack exchange,提问作者user22236177

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 00:03:39