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

如何在Docker中通过Prisma连接主机本地PostgreSQL数据库?

解决Prisma容器连接本地PostgreSQL的问题

我来帮你一步步排查并解决这个问题,你遇到的Project not found: 'default$default'错误和连接失败的情况,主要是因为Docker容器访问本地数据库的配置、PostgreSQL的权限设置,还有Prisma的部署步骤没到位导致的。

1. 先让本地PostgreSQL允许外部连接

Prisma运行在Docker容器里,对本地PostgreSQL来说属于“外部访问”,所以得先修改PostgreSQL的配置,放开权限:

  • 找到postgresql.conf文件(Mac上一般在/usr/local/var/postgres/或者/Library/PostgreSQL/{版本}/data/),把listen_addresses改成*,也就是listen_addresses = '*',允许所有IP访问。
  • 找到pg_hba.conf文件(同目录下),添加一行配置:host all all 0.0.0.0/0 md5,这是允许所有外部IP用密码方式连接数据库。
  • 修改完后重启PostgreSQL服务,比如用命令brew services restart postgresql(如果你是用Homebrew装的)。

2. 修正Docker里的主机地址(Mac环境)

你之前用的docker.for.mac.host.internal是旧版本Docker的写法,现在Mac上Docker访问本地主机的标准地址是host.docker.internal,先把这个地址替换到你的配置里。

3. 补全并修正docker-compose.yml配置

你的docker-compose.yml内容不完整,正确的配置需要包含Prisma连接PostgreSQL的所有信息,参考下面的示例:

version: '3'
services:
  prisma:
    image: prismagraphql/prisma:1.8
    restart: always
    ports:
      - "4466:4466"
    environment:
      PRISMA_CONFIG: |
        port: 4466
        databases:
          default:
            connector: postgres
            host: host.docker.internal
            port: 5432
            user: 你的PostgreSQL用户名
            password: 你的PostgreSQL密码
            database: 要连接的数据库名
            ssl: false # 本地数据库一般没开SSL,设为false就行

记得把上面的占位信息换成你本地PostgreSQL的实际内容,比如用户名默认是postgres,数据库要提前在本地创建好哦。

4. 重启Prisma服务

执行下面的命令,让新的配置生效:

docker-compose down
docker-compose up -d

5. 解决Project not found: 'default$default'错误

这个错误是因为Prisma还没有在你的数据库里创建对应的项目结构,你需要执行部署命令:

prisma deploy

如果是第一次部署,它会引导你选择本地的Prisma服务地址(默认是http://localhost:4466),确认后就会自动在数据库中创建Prisma需要的表和数据结构,完成后再访问Playground就正常了。

额外检查点

  • 确认本地PostgreSQL的5432端口没有被其他程序占用,可以用lsof -i :5432命令查看。
  • 检查防火墙设置,确保Docker容器能访问本地的5432端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:23:00