首页/新闻资讯/正文详情

Prisma CLI `prisma cluster add` 实战指南:把自建集群注册进 Cluster Registry

发布时间:2026/9/23 10:15:14 来源:云帆数科 栏目:资讯中心
Prisma CLI `prisma cluster add` 实战指南:把自建集群注册进 Cluster Registry
Prisma CLIprisma cluster add实战指南把自建集群注册进 Cluster Registry【免费下载链接】prisma1 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL MongoDB) [deprecated]项目地址: https://gitcode.com/gh_mirrors/pr/prisma1prisma cluster add是 Prisma CLI 中用于把已存在的集群登记到本地集群注册表cluster registry的命令。它通过交互式提示收集新集群的name、host与clusterSecret三个信息写入~/.prisma/config.yml之后prisma deploy即可将服务部署到该集群。本文以 Prisma 1.2 文档为骨架结合prisma-yml、prisma-cli-core源码完整讲解命令用法、字段含义、注册表文件结构以及底层实现原理。背景集群与集群注册表Cluster Registry在 Prisma 中Prisma 服务service被部署到所谓的集群cluster上。集群是承载 Prisma 服务运行的环境大体分为两类详见 docs/1.2/04-Reference/05-Clusters/01-Overview.md自托管 / 本地集群基于 Docker 运行由 Prisma CLI 管理底层 Docker 镜像与容器公共集群基于 Prisma Cloud无需自行配置集群即可将服务部署到公网但存在请求限流、存储上限等限制。Prisma CLI 首次使用时会在用户主目录创建.prisma目录其中包含集群注册表文件~/.prisma/config.yml。该文件登记了你可以部署服务的所有集群信息。运行prisma deploy时CLI 会依据注册表为你提供部署选项。prisma cluster add正是向这个注册表登记新集群的官方命令入口。prisma cluster add用法与交互流程命令本身不接受任何参数直接运行即可prisma cluster add执行后CLI 会触发一个交互式提示interactive prompt依次要求提供新集群的name、host和clusterSecret。真实交互示例根据 docs/1.2/04-Reference/05-Clusters/02-Docker.md 中记录的实操流程实际交互过程如下❯ prisma cluster add ? Please provide the cluster endpoint Define your cluster endpoint. Local: http://localhost:4466; Digital Ocean: http://droplet-ip-address:4466 ? Please provide the cluster secret Local: Leave empty (CLUSTER_PUBLIC_KEY is commented); Digital Ocean: The private key from the key pair generated via https://api.cloud.prisma.sh ? Please provide a name for your cluster your-cluster-name注意所有输入值请不要带引号直接填写。可以看到实际提示顺序是先问hostcluster endpoint再问clusterSecret最后问name与命令文档中列举字段的顺序略有不同——但三者缺一不可。三个输入字段详解字段含义取值说明name集群名称集群在注册表中的唯一标识键需与prisma.yml中cluster属性的值保持一致host集群端点地址本地集群形如http://localhost:4466Digital Ocean 等远程集群形如http://droplet-ip-address:4466clusterSecret集群密钥本地开发集群通常留空对应CLUSTER_PUBLIC_KEY被注释的场景启用认证的集群需填写密钥对中的私钥添加结果集群注册表~/.prisma/config.yml的结构添加成功后集群信息会被写入集群注册表~/.prisma/config.yml。一个典型的注册表文件示例如下clusters: local: host: http://localhost:4466 clusterSecret: -----BEGIN RSA PRIVATE KEY----- [ long key omitted ] -----END RSA PRIVATE KEY-----\r\n digital-ocean: host: http://45.55.177.154:4466 clusterSecret: -----BEGIN RSA PRIVATE KEY----- [ long key omitted ] -----END RSA PRIVATE KEY-----\r\n该结构与源码中定义的配置类型完全对应。在 cli/packages/prisma-yml/src/types/rc.ts 中注册表的 TypeScript 类型定义如下export interface RC { cloudSessionKey?: string clusters?: Clusters } export interface Clusters { [name: string]: ClusterConfig } export interface ClusterConfig { host: string clusterSecret: string }可以看到clusters是一个以集群名为键、以{ host, clusterSecret }为值的映射与文档示例逐字段吻合。注册表文件的读写实现从 cli/packages/prisma-yml/src/Environment.ts 的源码可以确认注册表文件的完整生命周期路径this.rcPath path.join(this.home, .prisma/config.yml)首次使用时fs.mkdirpSync自动创建目录加载loadGlobalRC()读取文件内容parseGlobalRC()通过js-yaml的safeLoad解析并支持在 YAML 中使用变量占位符Variables.populateJson写入saveGlobalRC()通过yaml.safeDump序列化{ cloudSessionKey, clusters }后写回文件集群合并addCluster(cluster)在写入前会先按workspaceSlug name查找已存在的同名集群若存在则先移除再追加避免重复登记。此外Environment会预置prisma-eu1、prisma-us1两个共享公共集群sharedClusters数组并可通过PRISMA_CLOUD_SESSION_KEY登录后从 Prisma Cloud 拉取你配置的集群列表fetchClusters()。注册后的工作方式prisma deploy如何找到集群注册表的核心消费场景是prisma deploy。当prisma.yml中的cluster属性被指定时CLI 直接部署到该集群其值必须是注册表clusters映射中的某个键或 Prisma Cloud 账户中配置的集群名未被指定时CLI 弹出集群交互选择选择结果会被写回prisma.yml作为默认值再次唤起选择需运行prisma deploy --interactive或手动删除prisma.yml中的cluster属性。prisma.yml中的cluster属性说明详见 docs/1.2/04-Reference/02-Service-Configuration/02-prisma.yml/02-YAML-Structure.md其约束为只含字母数字、连字符与下划线以大小写字母开头最长 64 字符。示例cluster: local注册表内的集群在运行时被映射为Cluster类实例见 cli/packages/prisma-yml/src/Cluster.ts关键行为包括端点归一化构造函数会去掉baseUrl末尾的/避免拼接出双斜杠部署端点选择getDeployEndpoint()返回${baseUrl}/management老版本集群则回退到/cluster由hasOldDeployEndpoint标记控制API 端点推导getApiEndpoint()依据集群的shared、local、isPrivate属性推导出http(s)://host/service/stage形式的 API 地址。认证原理clusterSecret 如何派上用场集群使用公钥/私钥对进行安全认证集群持有公钥私钥保存在本地由 Prisma CLI 用于生成集群令牌cluster token请求如prisma deploy携带的令牌可被集群用公钥校验。在 cli/packages/prisma-yml/src/Cluster.ts 的getLocalToken()中可以看到私钥的具体用法getLocalToken(): string | null { if (!this.clusterSecret !process.env.PRISMA_MANAGEMENT_API_SECRET) { return null } const grants [{ target: */*, action: * }] const secret process.env.PRISMA_MANAGEMENT_API_SECRET || this.clusterSecret const algorithm process.env.PRISMA_MANAGEMENT_API_SECRET ? HS256 : RS256 this.cachedToken jwt.sign({ grants }, secret, { expiresIn: 5y, algorithm, }) return this.cachedToken! }也就是说启用认证的集群其clusterSecret私钥被用于以RS256算法签发有效期 5 年的 JWT 集群令牌若设置了环境变量PRISMA_MANAGEMENT_API_SECRET则优先使用该变量并以HS256签发未提供私钥时返回null表示集群不需要认证对应本地开发时CLUSTER_PUBLIC_KEY被注释的场景。prisma cluster token命令源码见 cli/packages/prisma-cli-core/src/commands/token/cluster-token.ts封装了同样的令牌生成逻辑支持-c/--copy将令牌复制到剪贴板、-e/--env-file指定.env注入环境变量、-p/--project指定 Prisma 定义文件。实战流程从 Docker 部署到集群注册结合 docs/1.2/04-Reference/05-Clusters/02-Docker.md 的完整步骤一个典型的自建集群 注册流程如下启动本地集群运行prisma local start内部代理docker-compose up本机即拥有基于prismagraphql/prisma与mysql:5.7镜像的本地集群远程场景启用集群认证生成 RSA 公/私钥对将公钥通过CLUSTER_PUBLIC_KEY环境变量提交给 Prisma 集群注册集群运行prisma cluster add按提示输入端点、密钥与名称验证运行prisma cluster list查看注册表与 Prisma Cloud 中的所有集群部署在prisma.yml中指定cluster: name后执行prisma deploy。管理已注册集群的配套命令同属于prisma cluster子命令体系位于 docs/1.2/04-Reference/07-CLI-Command-Reference/05-Clustersprisma cluster list列出所有集群包括集群注册表中的条目以及通过 Prisma Cloud 配置的集群01-prisma-cluster-list.mdprisma cluster remove从注册表中移除集群04-prisma-cluster-remove.mdprisma cluster logs查看集群对应 Docker 容器的日志。上述增删操作也都可以通过手工编辑~/.prisma/config.yml完成在clusters映射下新增条目即等价于cluster add删除条目即等价于cluster remove。登出 Prisma CLI 则需移除注册表中的cloudSessionKey字段。常见问题与调试Error response from daemon: No such container说明 Docker 容器未在运行可用docker ps核对prismagraphql/prisma与prisma-dbmysql:5.7两个容器是否处于 Up 状态本地集群不可恢复可执行prisma local nuke彻底重置本地集群内部依次调用docker-compose kill、docker-compose down、docker-compose up注意该命令会清空本地集群的全部数据忘记集群名与prisma.yml不匹配prisma deploy会抛出ClusterNotFound对应 cli/packages/prisma-yml/src/errors/ClusterNotFound.ts此时请核对注册表键名与cluster属性值是否一致令牌生成失败getLocalToken()会抛出提示Did you provide the env var PRISMA_MANAGEMENT_API_SECRET?此时需检查是否已为集群配置clusterSecret或设置对应环境变量。小结prisma cluster add是连接自建 Prisma 集群与CLI 部署流程的枢纽它以交互方式采集name、host、clusterSecret将集群写入~/.prisma/config.yml注册表并让prisma deploy、prisma cluster list等命令能够识别并操作该集群。理解注册表文件结构与Cluster/Environment的源码实现有助于排查部署、认证与令牌相关问题也能在脱离 CLI 时通过手工编辑注册表完成同样的集群管理操作。【免费下载链接】prisma1 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL MongoDB) [deprecated]项目地址: https://gitcode.com/gh_mirrors/pr/prisma1创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

舞美设计性能优化实战:3招解决卡顿,面试必问避坑指南
舞美设计性能优化实战:3招解决卡顿,面试必问避坑指南

舞美设计性能优化实战:3招解决卡顿,面试必问避坑指南 配置环境就卡半天,这种痛苦谁懂?刚打开工程,进度条转了五分钟,CPU飙到90%,风扇狂转,代码写了一行,界面没反应。这种体验在舞美设计相关的实时渲染项目中太常见了。很多新人以为这是电脑配… · 2026/9/23 10:15:14

Johnny-Five 声呐测距实战:用 Proximity 控制器驱动 MaxBotix MB1010 超声波传感器
Johnny-Five 声呐测距实战:用 Proximity 控制器驱动 MaxBotix MB1010 超声波传感器

IoT机器人嵌入式 【免费下载链接】johnny-five JavaScript Robotics and IoT programming framework, developed at Bocoup. 项目地址: https://gitcode.com/gh_mirrors/jo/johnny-five 点击查看 免费下载 本篇技术指南聚焦于 Johnny-Five 框架中 MB1010&#xff0… · 2026/9/23 10:15:08

3分钟搞定bt无忧无虑:高频面试题背后的调试逻辑
3分钟搞定bt无忧无虑:高频面试题背后的调试逻辑

3分钟搞定bt无忧无虑:高频面试题背后的调试逻辑 刚把那段复制来的 bt 无忧无虑 示例代码扔进项目,控制台直接红屏报错?别急着骂娘,也别怀疑自己智商。这种“复制粘贴即死”的坑,是每一个后端或全栈开发者在应对高频面试题时最容易翻车的地方。很… · 2026/9/23 10:15:02

VMware 常用命令速查:从 esxcfg-vswitch 到 vmkiscsi-tool 的排障清单
VMware 常用命令速查:从 esxcfg-vswitch 到 vmkiscsi-tool 的排障清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/23 11:01:34

电商新决策链:内容即货架、信任即货币、场景即入口、数据即神经
电商新决策链:内容即货架、信任即货币、场景即入口、数据即神经

1. 电商不是在“卷价格”,而是在“重构用户决策链”“电商风云再起”这六个字,最近半年在行业内部会议、投资人简报和平台运营周会上被反复提起——但没人真正在说“风”从哪来、“云”往哪去。我去年深度参与了三家不同体量商家的全域经营升级项目&… · 2026/9/23 11:01:34

基于Python+Flask的旅游数据爬虫与可视化分析实践
基于Python+Flask的旅游数据爬虫与可视化分析实践

1. 项目发起的真实动机与技术选型拆解1.1 这个项目到底在解决什么问题先把这个标题拆开看——"PythonFlask爬虫大同旅游产业数据可视化分析",后缀还挂着一长串_o4skhwx7-vue pycharm django。这其实是一个非常典型的旅游数据采集与分析展示项目&#xff0… · 2026/9/23 11:01:28

最前線の Harness 設計を読み解く:Pi・Claude Code・Codex・DeepSeek を5サブシステムで比較する
最前線の Harness 設計を読み解く:Pi・Claude Code・Codex・DeepSeek を5サブシステムで比較する

最前線の Harness 設計を読み解く:Pi・Claude Code・Codex・DeepSeek を5サブシステムで比較する 【免费下载链接】learn-harness-engineering Harness engineering beginner tutorial, from 0 to 1 项目地址: https://gitcode.com/gh_mirrors/le/learn-harness-e… · 2026/9/23 11:01:20

SpringBoot社区协作系统开发与优化实践
SpringBoot社区协作系统开发与优化实践

1. 项目概述与核心价值社区协作与资源共享系统是当前数字化转型背景下极具实用价值的毕业设计选题。这个基于SpringBoot的全栈项目,完美融合了现代Web开发的主流技术栈与实际社区管理需求。我在实际开发过程中发现,这类系统不仅能满足高校对毕业设计的综… · 2026/9/23 11:01:20

Wireshark抓包分析TCP四次挥手过程与优化
Wireshark抓包分析TCP四次挥手过程与优化

1. TCP四次挥手原理回顾在深入分析Wireshark抓包数据之前,我们先快速回顾一下TCP四次挥手的基本原理。TCP连接是全双工的,这意味着数据可以同时在两个方向上独立传输。因此,当需要关闭连接时,每个方向都需要单独关闭,这… · 2026/9/23 11:01:19

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码