本文是一份可直接落地的 MVP 本地基础设施规划。
硬件:1 × 4C8G 轻量应用服务器(单机部署,服务仅绑定 127.0.0.1,不对外暴露)
目标:「go-zero 微服务 + Next.js + PG + Redis + Garage」全部跑在本地,0 外网暴露,后续迁云时只改配置变量、不动代码。
① 基础设施节点(8 个)
| 节点 | 容器内端口 | 角色 | 迁云动作 |
|---|
| etcd | 2379 | 配置中心 | 迁云 TCS etcd 集群 |
| PostgreSQL | 5432 | 主库 | 迁云 PostgreSQL 云数据库 |
| Redis | 6379 | 缓存/排行 | 迁云 Redis 标准版 |
| Garage | 3900 | 对象存储 | 迁云 COS 对象存储 |
| Prometheus | 9090 | 监控指标采集/存储 | 迁云 云监控(Prometheus 实例) |
| Grafana | 3000 | 监控可视化面板(对接 CLS) | 迁云 云监控(Grafana 可视化) |
| Loki | 3100 | 日志采集/存储(日志聚合) | 迁云 CLS 日志服务 |
| Promtail | – | 日志采集(通过 docker_sd 发现容器、抓取容器 stdout/stderr 日志) | 迁云后改用腾讯云 CLS:容器日志经采集插件或 stdout 直投,替换 Promtail |
② 公共服务节点(6 个)
| 节点 | 容器内端口 | 角色 | 迁云动作 |
|---|
| api-gateway | 8080 | 聚合网关 | 迁云容器 |
| user-core | 8080 | 用户/配额/档案 | 迁云容器 |
| billing-core | 8080 | 订单/钱包/订阅 | 迁云容器 |
| app-manager | 8080 | AppID 应用管理/配置 | 迁云容器 |
| common-api | 8080 | 公共 API(上传/内容审核/通用接口) | 迁云容器 |
| cron-job | 8080 | 定时任务 | 迁云容器 |
③ 业务服务节点(5 个)
| 节点 | 容器内端口 | 角色 | 迁云动作 |
|---|
| text-service | 8080 | 文本 (文生文/总结/翻译) | 迁云容器 |
| image-service | 8080 | 图像 (文生图/图生图/水印) | 迁云容器 |
| video-service | 8080 | 视频 (文生视频/图生视频) | 迁云容器 |
| audio-service | 8080 | 音频/音乐 (语音克隆/合成、AI 音乐/BGM) | 迁云容器 |
| file-service | 8080 | 文件处理 (OCR 识别/文件处理) | 迁云容器 |
④ 前端用户服务(1 个,独立)
| 节点 | 容器内端口 | 角色 | 迁云动作 |
|---|
| nextjs-* | 3000 | Next.js SSR 用户前端 | 迁云静态+CDN |
⑤ 首日行动清单(可照做)
由于全链路不绑宿主机端口,监控面板要在容器网络内访问:用上面的 docker-compose exec 先验证 Grafana 存活,再临时 docker-compose port 或加 -p 127.0.0.1:3000:3000 类映射到本机查看,用完即撤。注意 Grafana 与 Next.js 容器内端口同为 3000,映射宿主机端口时两者会冲突,务必错开(如 Grafana 用 3000、Next.js 用 3001)。
⑥ 一句话总结
20 节点全部用容器内默认端口,不绑宿主机,DNS 互访 0 歧义;
空载 < 700 MB,年磁盘 < 7 GB,4C8G 够用 5 年;
迁云时只改变量,0 代码改动。
延伸阅读