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

Docker化NestJS+Prisma服务时Prisma无法连接Supabase数据库

NestJS+Prisma Docker化后无法连接Supabase数据库

我是Docker新手,跟着教程把NestJS+Prisma服务Docker化,镜像构建正常,但运行容器时Prisma连不上托管在Supabase的数据库。

问题细节

连接字符串配置(docker-compose.yaml片段)

environment:
  DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@$db.ieikcwdztopjvzzgdppu.supabase.co:5432/${POSTGRES_DB}

错误信息

PrismaClientInitializationError: Authentication failed against database server at `db.ieikcwdztopjvzzgdppu.supabase.co`, the provided database credentials for `postgres` are not valid.

我试过不用环境变量,直接硬编码连接字符串,结果还是一样。完整的docker-compose.yaml配置如下:

services:
  api:
    build:
      dockerfile: Dockerfile
      context: .
      # Only will build development stage from our dockerfile
      target: development
    depends_on:
      - postgres
    env_file:
      - .env
    environment:
      DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@$db.ieikcwdztopjvzzgdppu.supabase.co:5432/${POSTGRES_DB}
    postgres:
      image: postgres
      restart: always
      environment:
        POSTGRES_DB: ${POSTGRES_DB}
        POSTGRES_USER: ${POSTGRES_USER}
        POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
        POSTGRES_HOST: ${POSTGRES_HOST}
        POSTGRES_PORT: ${POSTGRES_PORT}
      ports:
        - '5432:5432'
      volumes:
        - docker-nest-postgres:/var/lib/postgresql/data
    volumes:
      - .:/usr/src/app

    # Run a command against the development stage of the image
    command: npm run start:dev
    ports:
      - 3000:3000

解决步骤

  • 删除本地Postgres服务:你要连接的是Supabase远程数据库,docker-compose里配置的本地Postgres容器完全多余,还会造成混淆,直接删掉整个postgres服务块。
  • 修正连接字符串语法:连接字符串里的@$db多了个$符号,改成@db.ieikcwdztopjvzzgdppu.supabase.co。
  • 检查Supabase权限:登录Supabase控制台,确认使用的数据库用户有远程连接权限,同时IP白名单要允许Docker容器的IP(测试阶段可以暂时设为0.0.0.0/0)。
  • 验证环境变量准确性:进入容器执行echo $DATABASE_URL,查看输出的连接字符串和Supabase提供的是否完全一致,重点核对用户名、密码、数据库名。

修正后的docker-compose.yaml示例:

services:
  api:
    build:
      dockerfile: Dockerfile
      context: .
      target: development
    env_file:
      - .env
    environment:
      DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db.ieikcwdztopjvzzgdppu.supabase.co:5432/${POSTGRES_DB}
    volumes:
      - .:/usr/src/app
    command: npm run start:dev
    ports:
      - 3000:3000

内容的提问来源于stack exchange,提问作者José Carlos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 01:08:37