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

Docker Compose部署NestJS+CockroachDB遇P1001连接错误求助

解决方案:Docker Compose部署时Prisma无法连接CockroachDB(P1001错误)

核心问题分析

你遇到的P1001错误,本质是Docker镜像构建阶段无法访问CockroachDB容器:Dockerfile中的npx prisma db push是在镜像构建时执行的,此时容器还未加入Docker Compose的服务网络,自然无法通过crdb主机名访问数据库服务。


具体修复方案

方案1:将Prisma数据库同步移到容器启动阶段(推荐)

把prisma db push从Dockerfile的构建步骤中移除,放到容器启动时执行,此时容器已加入Compose网络,可正常访问crdb服务。

  1. 修改Dockerfile,删除RUN npx prisma db push这一行
  2. 在docker-compose.yml的app服务中添加启动命令:
services:
  app:
    # 其他配置...
    command: sh -c "npx prisma db push && npm run start:prod"

方案2:构建阶段手动连接到Compose网络

如果必须在构建阶段执行数据库同步,需让构建过程接入CockroachDB所在的网络:

  1. 先单独启动CockroachDB服务:
docker-compose up -d crdb
  1. 查看Compose自动创建的网络名称(默认格式为[项目名]_default):
docker network ls
  1. 构建app镜像时指定该网络:
docker-compose build --network [你的网络名称] app

方案3:确保CockroachDB监听所有地址

检查CockroachDB的启动命令,确保它监听0.0.0.0而非仅localhost,否则同一网络内的其他容器无法访问:

services:
  crdb:
    image: cockroachdb/cockroach:latest
    command: start-single-node --insecure --listen-addr=0.0.0.0
    ports:
      - "26257:26257"

方案4:确认服务在同一自定义网络

如果使用了自定义网络,必须保证app和crdb服务都加入该网络:

networks:
  app-network:
    driver: bridge

services:
  crdb:
    # 其他配置...
    networks:
      - app-network
  app:
    # 其他配置...
    networks:
      - app-network

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 20:01:23