Skip to content

一键部署

把本地项目或源码一键发布到服务器:构建 → 打包 / 打镜像 → 上传 → 原子发布 → 健康检查 → 失败自动回滚。部署方式不写死在代码里,而是数据驱动的「配方(recipe)」,加一种部署方式只要加个配方文件,零改代码。

进入

主界面左侧导航 → 部署

页面分三块:部署组(多端编排)、部署目标(一个个发布实例)、配方库(部署方式模板)。

三层模型

配方 Recipe   ——  部署方式模板(构建/发布/健康检查各阶段填什么命令),三级来源,加文件即扩展
   ↓ 引用 + 变量注入
目标 Target   ——  一个发布实例 = [配方 + 服务器 + 变量 + 发布策略]
   ↓ 交给
执行引擎      ——  不变的骨架:preflight→构建→打包→上传→原子发布→健康检查→回滚
  • 「一个项目多种部署方式」 = 同一项目下多个目标,各引不同配方
  • 「每种项目不一样」 = 不同配方
  • 「易扩展」 = 加配方文件即可,AI 也能读

配方库

内置 6 个配方覆盖主流场景,配方可在用户级 / 项目级扩展或覆盖:

配方覆盖重启方式
static-nginx前端静态站nginx -s reload
node-pm2Node 后端pm2 reload
systemd-binaryJava jar / Go / 二进制systemctl restart
docker-composeDocker Composedocker compose up -d
1panel-app1Panel 托管应用面板 / 约定
custom-script兜底万能:各阶段纯自定义命令自定义

点配方卡片可查看原文。配方是 Markdown + frontmatter(与技能同构),正文里用 bash {#stage:release on:target} 这种代码块标记每个阶段在哪跑什么。

配方里不许有凭据

配方 / 目标里禁止任何凭据字段,server 永远只用别名(同技能安全扫描)。deployRoot 过敏感路径黑名单,防止 cleanup 旧版本变成 rm -rf /

新建部署目标

新建目标 打开编辑器:选配方 → 选服务器 → 按配方变量填表单 → 选构建方式。

构建方式(buildSource)

含义
artifact用本地已构建好的产物(dist / CI 产物),本地打 tar.gz 上传——默认,最安全
image本地 docker build 出镜像,docker save 传到远端 docker load
server上传源码 / git pull,在服务器上构建(Tauri-Rust 等需目标平台编译走这)
none无需构建(拉远程镜像 / 纯配置发布)

artifact / image 模式可填本机工作目录构建命令(如 pnpm install / pnpm build:prod),并支持「内容未变跳过构建」开关。

发布策略:软链原子切换

artifact 模式用 symlink 原子发布,回滚 = 软链指回上一版:

{{deployRoot}}/
├── releases/20260611-1430/   ← 本次解压目标
├── releases/20260610-0900/   ← 上一版(保留 keepReleases 份)
├── current -> releases/20260611-1430   ← ln -sfn 原子切换
└── shared/  (.env / logs / uploads 不随版本走)
  • keepReleases:保留几份旧版本(默认 5,超出自动清理)
  • shared:跨版本共享的文件 / 目录(.envlogsuploads),软链进每个 release
  • 自动回滚:健康检查失败时自动软链回上一版 + 重启

Compose 机密自动生成

image / none 后端模式可开「compose 机密」:

  • compose 模板里写 __DB_PASSWORD__ / __JWT_SECRET_KEY__ 这种占位
  • 列出要自动生成的机密名
  • 部署时 Reeve 后端生成强随机值替换占位,写进服务器 compose,明文你和 AI 都看不到

共享 MySQL 自动建库建账号

部署后端时常要一个数据库。编辑器里可选数据库托管模式:

模式行为
不托管自己管
新建库 + 账号选一个有建库权限的 MySQL 管理员凭据,Reeve 首次部署时自动建库 + 建应用账号(强随机密码入凭据库
用已有库选一个已有的应用凭据

还能挂多个初始化 SQL 文件,首次部署时导入。

域名与 HTTPS

任意模式都能填域名(可选 HTTPS)。非空时部署后跑配方的 domain 阶段,自动配反代 + 签发证书,与网站与证书打通。

执行部署

目标卡片上:

  • 部署:开跑。执行进度走全局任务系统,可最小化到右下角 dock,跨切页存活
  • 预览(dry-run):只渲染各阶段会执行的命令,不真跑——先看清楚再决定
  • 执行抽屉里每个阶段是编号步骤(待执行 → 进行中 → 成功 / 失败),带实时滚动日志

Docker 镜像版本化 + 历史 + 回退

image 模式支持版本化部署(新功能):

  • 每次部署给镜像打唯一不可变 tag(时间戳 20260611-1430 预填可改,或手填 1.2.3),不再覆盖 latest
  • 服务器 compose 的 image 行每次部署 / 回退被精准补丁成目标版本,再 compose up -d --force-recreate
  • 本地 SQLite 记部署历史台账(版本 / 大小 / 服务器 / 状态 / 是否当前生效)
  • 旧镜像默认保留 5 个(可配),当前生效的永不删

版本化目标的卡片多一个 历史 按钮,打开历史抽屉:

  • 看历次部署的版本列表
  • 一键回退:选旧版本,Reeve 先 docker image inspect 对账,镜像还在就改 tag + compose up 切过去;镜像已被清理则明确提示不可回退、引导重新构建

回退只走人用 UI

部署历史 AI 只能只读查询list_deploy_history 工具);回退动作只能在 Reeve 界面点,AI 不能触发。

部署组(多端一键发)

monorepo 项目常要「有时只发后端、有时全发、有时不要移动端」。部署组把多个目标绑成一组:

  • 组里每个端一个复选框,勾选要发的端 → 一键串行部署
  • 端顺序 = 组内顺序(编辑器里可上下移动)
  • 失败即停 开关:任一端失败是否停后续端
  • 整组也能 dry-run 预览(按端分组展示每端每步命令)
  • 执行抽屉每端一个折叠面板,独立时间线

这次只发后端、下次全发互不影响——运行时勾选不改存盘默认。

安全模型:人用通道

部署是用户主动触发的动作,不是 AI。所以走人用通道

  • 跳过:AI 全局布防、每服务器 AI 档位、sudo 强制审批、授权过期闸(这些是约束 AI 的,不该挡用户本人)
  • 保留:致命危险命令黑名单(防 deployRoot 配错变 rm -rf /)+ 全程审计 + 输出脱敏(密码不外泄)

凭据明文前端与 AI 都拿不到(沿用全局安全红线)。AI 经 MCP 触发部署属于未来能力,届时走完整 AI 策略 + 默认审批。

下一步

若依科技工作室 · 承接后台管理 / 桌面软件 / 全栈 / 小程序定制开发 · 技术服务咨询