前言
记录我用 Flutter + SpringBoot 开发一键部署工具的过程,实现类似 Vercel 的国内版部署体验。
为什么做这个?
部署一个全栈项目太麻烦了:
- 前端要构建、上传、配置 CDN
- 后端要打包、推镜像、配置 K8s
- 数据库要迁移、备份、监控
Vercel 很好,但只支持前端。国内访问还慢。
所以我想做一个:前端+后端+数据库,一键部署,国内访问快。
核心功能
1. 一键部署
就这一条命令,自动完成:
- 检测项目类型(Flutter/Spring Boot/Node.js)
- 构建项目
- 创建 Docker 镜像
- 推送到镜像仓库
- 部署到云服务器
- 配置域名和 HTTPS
2. 多环境支持
1 2 3 4 5 6 7 8 9 10 11 12
| environments: dev: replicas: 1 resources: cpu: 0.5 memory: 512Mi prod: replicas: 3 resources: cpu: 2 memory: 2Gi
|
3. 自动扩缩容
1 2 3 4
| scaling: minReplicas: 1 maxReplicas: 10 targetCPU: 70
|
技术架构
客户端(Flutter)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class DeployService { Future<DeployResult> deploy(DeployConfig config) async { await buildProject(config); await createImage(config); await pushImage(config); await deployToCluster(config); await setupDomain(config); return DeployResult.success(); } }
|
服务端(Spring Boot)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| @Service public class DeployService { public DeployResult deploy(DeployRequest request) { validateConfig(request); k8sClient.deploy(request.getDeployment()); k8sClient.setupIngress(request.getDomain()); return DeployResult.success(); } }
|
部署流程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| 用户点击"部署" │ ▼ ┌──────────────────┐ │ 检测项目类型 │ └─────────────────┘ │ ▼ ┌──────────────────┐ │ 执行构建脚本 │ │ (flutter build) │ └────────┬─────────┘ │ ▼ ──────────────────┐ │ 创建 Docker 镜像 │ └────────┬───────── │ ▼ ┌──────────────────┐ │ 推送到镜像仓库 │ └────────┬─────────┘ │ ▼ ┌────────────────── │ 部署到 K8s 集群 │ └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ 配置域名+HTTPS │ └────────┬─────────┘ │ ▼ 部署完成!
|
与 Vercel 的对比
| 功能 |
Vercel |
我的工具 |
| 前端部署 |
✅ |
✅ |
| 后端部署 |
|
✅ |
| 数据库 |
❌ |
✅ |
| 国内访问 |
慢 |
快 |
| 价格 |
免费额度少 |
按需付费 |
总结
做国内版 Vercel,但支持全栈部署。
让开发者专注于写代码,部署的事交给工具。
记录我用 Flutter + SpringBoot 开发一键部署工具的过程,实现类似 Vercel 的国内版部署体验。