关于 prisma-compute
prisma-compute 是用于在 Prisma Compute 上部署和运维 TypeScript 应用的技能,面向开发者。内容涵盖 Prisma 8 CLI、基于 Composer 的应用配置、部署、服务管理和故障排查。
主要功能
- 01通过 Prisma Composer 部署应用
- 02使用 Prisma 8 CLI 命令
- 03配置服务和数据库
- 04管理部署、版本和日志
- 05排查运行时与部署问题
适用场景
- 01将新的 TypeScript 应用部署到 Prisma Compute
- 02迁移使用旧版 Compute CLI 的项目
- 03设置预览阶段或 CI 部署
- 04查看日志或回滚服务版本
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ prisma/ skills --skill prisma-compute安装后在 Claude Code 中输入/prisma-compute确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/app-composer-setup.mdapp-framework-builds.mdautomation-create-prisma.mdautomation-rest-api.mdcli-command-map.mddebug-deploy-failures.mddeploy-cli-and-ci.mddeploy-on-push.mdops-services-and-config.mdruntime-requirements.md详细介绍
Prisma Compute
将 TypeScript 应用部署到 Prisma Compute,并在部署后对其进行操作。每次部署都会通过 Prisma Composer 应用(module.ts 根模块)和 Prisma 8 CLI prisma 完成。
已针对 prisma 8.0.0-rc.21(以 @prisma/cli 名称发布,内容完全相同)、@prisma/composer 和 @prisma/composer-prisma-cloud 0.28.0、@prisma/compute 0.1.0-beta.0 以及 create-prisma 0.14.1 进行验证。已再次针对 prisma 8.0.0-rc.23 进行检查,其命令界面与 rc.21 一致;以及 Composer 0.30.0 进行检查,该版本新增了 node() 的 dependencies 选项(0.29.0),并缩小了支持的 Node.js 版本范围。CLI 更新很快:使用本技能未提及的标志前,请运行 npx prisma <group> --help。
与版本匹配的技能
已安装的软件包会附带与其版本匹配的 Agent 技能:
prisma-platform-core-concepts,位于prisma中:项目、分支、服务、版本、环境变量、推送时部署。prisma-composer-core-concepts,位于@prisma/composer中:声明服务、模块、数据库和构建;dev、deploy和拆除。
npx prisma skills sync 会将它们复制到 Agent 技能目录(.claude/skills、.cursor/skills、.agents/skills、.devin/skills),而 npx prisma skills list 会显示已安装的内容。npx prisma init 会执行相同操作,并添加一个用于保持技能为最新状态的 postinstall 钩子。安装这些技能后,请使用它们了解 API 详情。本技能介绍部署和运维工作流及其注意事项。
已移除的功能
Composer 之前的 Compute CLI 已不再提供。其命令会报错 CLI.UNKNOWN_COMMAND(已移除的标志会报错 CLI.INVALID_ARGUMENTS),不会读取其配置文件,也会忽略其环境变量:
| 已移除 | 替代方案 |
|---|---|
@prisma/cli app deploy、app build、app run | 使用自己的构建脚本,然后运行 npx prisma deploy module.ts;运行 npx prisma dev module.ts 可在本地运行 |
prisma.compute.ts、prisma.compute.json、defineComputeConfig | 使用 module.ts、为每个通过 compute() 声明的服务配置一个 service.ts,以及 prisma.config.ts 中的 composer 部分 |
init 写入 Compute 配置 | 现在,npx prisma init 会写入仅包含 skills 部分的 prisma.config.ts,将 prisma 添加为开发依赖,并同步技能。请自行添加 composer 部分 |
compute:deploy 脚本 | 运行 npx prisma deploy module.ts,或使用当前 create-prisma 生成的 deploy 脚本 |
app deploy --branch <name> | npx prisma deploy module.ts --stage <name> |
app deploy --prod、--no-promote、app promote | 不指定 --stage 即会部署到生产环境;service version promote <version-id> |
app show、app open、app list-deploys、app show-deploy | service show <service>、service open <service>、service version list <service>、service version show <version-id> |
app logs | service logs <service> |
app rollback --to <id> --yes | service version rollback <service> --to <id> --confirm <id> |
app domain ... | service domain ... --service <service> |
app remove | 从 module.ts 中移除 provision() 并部署,或运行 service delete <service> --confirm <service> |
build logs <build-id> | GitHub Actions 运行日志或 Console;使用 GET /v1/builds/{buildId} 获取状态和失败步骤 |
database ... | postgres ... |
project env remove | project env delete |
auth logout --workspace <id> | auth workspace logout <id> |
agent install、agent update、agent status | 运行 npx skills add prisma/skills --skill prisma-compute;同步包技能请运行 npx prisma skills sync |
PRISMA_PROJECT_ID、PRISMA_APP_ID、PRISMA_SERVICE_ID | 使用 --project <id-or-name>、作为位置参数传入服务,以及通过 project link 创建的 .prisma/local.json |
/v1/apps REST 端点 | /v1/services(/v1/apps 路径已弃用) |
包含 prisma.compute.ts 或 compute:deploy 脚本的代码库是为已移除的工作流设置的。请将其迁移到 Composer(app-composer-setup.md),而不要运行旧命令。
适用场景
- 将新应用或现有应用部署到 Prisma Compute
- 迁移使用
prisma.compute.ts、compute:deploy或@prisma/cli app deploy的项目 - 设置预览阶段、推送时部署或 CI 部署
- 查看服务日志、列出版本、提升版本或回滚
- 在 Compute 项目中管理环境变量、自定义域名、Prisma Postgres 数据库或存储桶
- 调试部署失败、服务无法访问、
504,或实例休眠时停止的任务
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | CLI 功能 | 严重 | cli- |
| 2 | 应用声明 | 严重 | app- |
| 3 | 运行时 | 严重 | runtime- |
| 4 | 部署 | 高 | deploy- |
| 5 | 运维 | 高 | ops- |
| 6 | 调试 | 高 | debug- |
| 7 | 自动化 | 中 | automation- |
快速参考
1. CLI 界面(关键)
cli-prisma-8-binary- 平台和部署命令仅在 Prisma 8 CLI 中提供。在 Prisma 6 或 7 项目中,npx prisma会运行该版本的 ORM CLI,其中没有auth、project、service或deploy;Prisma 7 的dev会启动本地数据库。请检查npx prisma --version;在 Prisma 8 项目之外,请使用npx @prisma/cli@latest <command>。cli-help-first- 命令组包括auth、project(含project env)、postgres、bucket、branch、git和service(含service version和service domain),以及deploy、dev、init、skills和feedback。使用标志前,请先阅读--help。cli-json- 传入--json,并在脚本中传入--no-interactive。根据error.code(NAMESPACE.SUBCODE)分支处理,并遵循nextActions;不要解析消息。cli-explicit-targets- 将服务名作为第一个参数,用--project指定项目(或关联目录),并用--branch指定预览环境。不传入--branch时,命令会针对生产分支;CLI 不会读取当前 Git 分支。cli-consent-tokens- 破坏性命令需要通过--confirm <token>指定准确的 ID、名称或主机名。--yes无法授予同意。只有在用户要求执行该操作时才运行这些命令。
2. 应用声明(关键)
app-composer-required- 可部署的应用需要包含module.ts(默认导出module(name, ...))、每个服务器对应的service.ts(包含compute({ name, deps, build })),以及prisma.config.ts中带有prismaCloud()、nodeBuild()(Next.js 还需nextjsBuild())和state: prismaState()的composer部分。app-build-adapter- 对于单个自包含构建包,使用node({ module: import.meta.url, entry });对于已构建的目录,使用node({ module, dir, entry });对于 Next.js standalone,使用nextjs({ module, appDir })。如果构建会将程序包保留为导入项,请在node()中添加dependencies: "external"。请参阅app-framework-builds.md。app-region- 首次部署会创建项目,因此需要指定区域:prismaCloud({ region: "eu-central-1" })或PRISMA_REGION。之后无法更改区域。app-databases-rawPostgres()(包根目录)会提供{ url };@prisma/composer-prisma-cloud/orm中的postgres(contract)会添加类型化客户端,并在部署时应用已提交的迁移。请通过service.load()读取这两者,而不是使用process.env.DATABASE_URL。app-names- 配置 ID 和服务名仅允许使用[A-Za-z0-9],且平台会拒绝长度少于三个字符的 ID。根模块名称会成为项目名称。
3. 运行时(关键)
runtime-bind-all-interfaces- 监听service.port()(也会导出为PORT,默认值为 3000),并绑定到0.0.0.0。绑定到环回地址的监听器无法访问。runtime-bun- 服务运行在 Bun 上。默认情况下(dependencies: "bundled"),部署只会包含构建输出,不会包含项目的node_modules,因此构建必须内联除运行时内置模块之外的所有依赖。如果构建会将程序包保留为导入项(tsc、Astro 的 Node 适配器),则需在node()中设置dependencies: "external",部署会暂存入口导入的已安装程序包。runtime-first-byte-60s- 如果请求在 60 秒内没有发送任何字节,就会收到504 Gateway Time-out,并且请求会被取消。请先响应,再通过waitUntil或队列继续处理。runtime-sleep- 空闲实例会被快照并恢复。计时器和未等待的 Promise 可能会停滞。@prisma/compute中的waitUntil和KeepAwakeGuard可尽力让实例保持唤醒;它们无法保证工作持久执行。runtime-no-websockets- 不支持 WebSocket 服务器。
4. 部署(高优先级)
deploy-build-first-deploy和dev不会构建。先运行构建,再执行npx prisma deploy module.ts。deploy-dev-first-npx prisma dev module.ts无需凭据即可在本地运行整个应用。部署前验证每个本地 URL。deploy-production-intent- 不带--stage的部署,以及向已连接仓库的默认分支推送,都会更改生产环境。先征得用户同意;预览环境请使用--stage <name>。deploy-auth- 在工作站上,用户运行npx prisma auth login(浏览器)。在 CI 中设置PRISMA_SERVICE_TOKEN和PRISMA_WORKSPACE_ID。部署前检查npx prisma auth whoami --json(envelope.result.authenticated、envelope.result.workspace)。deploy-link-after-deploy会根据根模块名称(或--name)查找或创建项目,且不会写入.prisma/local.json。之后运行npx prisma project link <app-name>,或传入--project,再运行service、git或project env命令。deploy-on-push- 推送后部署需要同时运行npx prisma git connect(交互式),并使用运行prisma/cloud-deploy-action@v1的工作流。仅连接不会触发部署。deploy-verify-url- 从部署输出(--json结果或--report <path>)中获取每个服务 URL,并向其发送请求。
5. 运维(高优先级)
ops-logs-service logs <service>读取实时版本;--version-id <id>读取其他版本,--follow则持续输出。构建输出位于 CI 日志或 Console 中,而非 CLI 中。ops-versions-service version promote <version-id>会使用生产环境变量重新构建。service version rollback <service> --to <id> --confirm <id>会切回指定版本,而不重新构建。ops-env-write-only-project env add|update|list|delete可搭配--role production、--role preview或--branch <name>使用。变量值不会返回,并会在下次部署时生效。ops-domains-service domain add <hostname> --service <service>,创建命令报告的 CNAME,然后运行service domain wait。仅限生产分支。ops-secrets-once-postgres create、postgres connection create|rotate和bucket key create只会显示一次凭据。请妥善保存,切勿回显。
6. 调试(高优先级)
debug-error-code-first- 修改任何内容前,先读取--json输出中的error.code和nextActions,或读取--report文件中的failure.code。debug-public-url- 测试输出的公共 URL,而非localhost。部署已收敛但无响应,通常是主机绑定、端口或启动时崩溃导致的;请查看service logs。debug-report-cli-bugs- 使用npx prisma feedback "<message>"报告无法解决的 CLI 故障,且不要包含机密信息。
7. 自动化(中优先级)
automation-create-prisma-create-prisma会搭建新的 Prisma 8 项目,该项目已经是 Composer 应用。其--json模式会执行部署,除非传入--no-deploy。automation-control-api-@prisma/composer/control提供deploy、destroy、dev和log。拆除某个阶段时使用destroy;它只读取PRISMA_SERVICE_TOKEN和PRISMA_WORKSPACE_ID。automation-rest-api- 使用https://api.prisma.io/v1/doc中的/v1/services、/v1/deployments/{deploymentId}/logs和/v1/builds。不要基于@prisma/compute-sdk构建新的部署工具。
首选工作流
- 检查
package.json(prisma8.x 是否为开发依赖,是否已安装@prisma/composer和@prisma/composer-prisma-cloud)、module.ts、prisma.config.ts、构建脚本,以及已移除流程的残留内容(prisma.compute.ts、compute:deploy)。 - 安装缺少的依赖并同步包技能:
npm install @prisma/composer @prisma/composer-prisma-cloud npm install -D prisma npx prisma skills sync - 声明或迁移应用:
app-composer-setup.md和app-framework-builds.md。 - 构建,运行
npx prisma dev module.ts,并请求它输出的每个本地 URL。 - 运行
npx prisma auth whoami --json。如果envelope.result.authenticated为false,请用户运行npx prisma auth login。 - 使用
npm run build && npx prisma deploy module.ts --stage <name> --json部署预览环境;用户确认后,也可以不带--stage部署生产环境。新项目需要指定区域。 - 请求输出的每个 URL,然后运行
npx prisma project link <app-name>和npx prisma service list --json(预览环境需添加--branch <stage>)。 - 报告应用名称、阶段、服务 ID、URL 和数据库 ID。切勿报告机密值。
避免
- 不要运行
@prisma/cli app ...、build logs或database ...,也不要创建prisma.compute.ts。 - 不要通过 Prisma 6 或 7 的
prisma二进制运行平台命令。 - 不要在 Composer 服务中从
process.env读取端口或连接字符串。 - 不要认为
deploy会执行构建、迁移rawPostgres()数据库,或将生产数据复制到阶段环境。 - 不要对破坏性命令传入
--yes;它不能代替用户授权。 - 不要以非交互方式运行
auth login或git connect;这两项都需要有人在浏览器中操作。 - 未经用户同意,不要推送到已连接仓库的默认分支;这会部署生产环境。
参考资料
cli-command-map.md:所有已验证的命令、全局标志、JSON 信封、目标指定和授权令牌app-composer-setup.md:最小声明、区域、数据库、配置和机密,以及从prisma.compute.ts迁移app-framework-builds.md:各框架的构建输出和build:适配器runtime-requirements.md:Bun、主机和端口、首字节耗时 60 秒、休眠、保持唤醒、区域deploy-cli-and-ci.md:prisma deploy、阶段、凭据、输出、CI、拆除deploy-on-push.md:GitHub 连接和prisma/cloud-deploy-action工作流ops-services-and-config.md:服务、版本、日志、域名、环境变量、数据库、存储桶debug-deploy-failures.md:症状、原因和修复方法automation-create-prisma.md:搭建新的 Composer 应用automation-rest-api.md:REST API 路径、控制 API,以及@prisma/compute-sdk的状态
文档:Compute、部署你的第一个应用、Composer、CLI 参考。
反馈
npx prisma feedback "<message>" 会向 CLI 团队发送匿名反馈,并附上 CLI 版本、Node.js 版本和操作系统平台。添加 --email <address> 可请求回复。切勿包含令牌、连接 URL 或用户数据。