241 lines
5.9 KiB
Markdown
241 lines
5.9 KiB
Markdown
# Goosed 本地构建方案 — 第一阶段实施计划
|
||
|
||
> **阶段目标:** 本地完整验证 Docker 构建方案,无生产影响。
|
||
> **时间预期:** 1–2 周。
|
||
> **关键特点:** 完全本地化,手工构建 + 交付,git.tkmind.cn 代码管理。
|
||
|
||
---
|
||
|
||
## 🎯 核心流程
|
||
|
||
```
|
||
Step 1: 代码提交
|
||
└─ git push origin main (to git.tkmind.cn)
|
||
|
||
Step 2: 本地构建
|
||
└─ bash scripts/verify-goosed-docker.sh local
|
||
└─ 输出: tkmind/goosed:local 镜像
|
||
|
||
Step 3: 本地验证 (1–2 周)
|
||
├─ docker-compose up -d
|
||
├─ 运行测试、监控、性能测试
|
||
└─ 确认稳定
|
||
|
||
Step 4: 镜像交付
|
||
├─ docker save goosed.tar
|
||
└─ scp 到 103 (后续部署)
|
||
```
|
||
|
||
---
|
||
|
||
## 📋 你需要的文件(最终清单)
|
||
|
||
| 文件 | 用途 | 状态 |
|
||
|------|-----|------|
|
||
| `scripts/verify-goosed-docker.sh` | 本地一键构建 | ✅ 已完成 |
|
||
| `docker-compose.local.yml` | 本地开发环境 | ✅ 已完成 |
|
||
| `docs/goosed-docker-local-verification.md` | 测试指南 | ✅ 已完成 |
|
||
| `docs/goosed-local-build-delivery.md` | 构建 + 交付说明 | ✅ 已完成 |
|
||
| `docs/goosed-phase1-local-plan.md` | 本计划 | ✅ 已完成 |
|
||
|
||
**删除的文件:**
|
||
- ❌ `.github/workflows/build-goosed.yml`(GitHub Actions,不需要)
|
||
- ❌ `docs/ghcr-setup.md`(ghcr.io,不需要)
|
||
- ❌ `docs/goosed-ci-implementation-plan.md`(CI/CD,不需要)
|
||
|
||
---
|
||
|
||
## 🚀 立即开始(今天)
|
||
|
||
### Step 1:提交文件到 git.tkmind.cn
|
||
|
||
```bash
|
||
cd /Users/john/Project/Memind
|
||
|
||
# 查看修改
|
||
git status
|
||
|
||
# 添加文件
|
||
git add scripts/verify-goosed-docker.sh \
|
||
docker-compose.local.yml \
|
||
docs/goosed-docker-local-verification.md \
|
||
docs/goosed-local-build-delivery.md \
|
||
docs/goosed-phase1-local-plan.md
|
||
|
||
# 提交
|
||
git commit -m "feat: goosed 本地 Docker 构建方案 (第一阶段)
|
||
|
||
- scripts/verify-goosed-docker.sh: 一键本地构建脚本
|
||
- docker-compose.local.yml: 本地开发环境
|
||
- docs/goosed-docker-local-verification.md: 本地测试指南
|
||
- docs/goosed-local-build-delivery.md: 构建交付方案
|
||
- docs/goosed-phase1-local-plan.md: 实施计划
|
||
|
||
特点:完全本地化,无 CI 依赖,手工构建 + 交付。
|
||
时间预期:1-2 周本地验证。"
|
||
|
||
# 推送到 git.tkmind.cn
|
||
git push origin main
|
||
```
|
||
|
||
### Step 2:本地验证(立即运行)
|
||
|
||
```bash
|
||
# 进入项目目录
|
||
cd /Users/john/Project/Memind
|
||
|
||
# 一键构建 + 验证
|
||
bash scripts/verify-goosed-docker.sh local
|
||
|
||
# 预期输出(8–12 分钟)
|
||
# ✅ 镜像构建完成
|
||
# ✅ 容器已启动
|
||
# ✅ 容器已就绪
|
||
```
|
||
|
||
### Step 3:容器测试
|
||
|
||
```bash
|
||
# 脚本会显示测试命令,按提示执行即可
|
||
# 例如:
|
||
|
||
# 查看容器状态
|
||
docker ps | grep goosed
|
||
|
||
# 检查健康状态
|
||
curl http://127.0.0.1:18006/status
|
||
|
||
# 查看日志
|
||
docker logs -f <container-id>
|
||
```
|
||
|
||
---
|
||
|
||
## 📅 一周的验证计划
|
||
|
||
| 天 | 任务 | 预期 |
|
||
|---|-----|-----|
|
||
| **Day 1** | 代码提交 + 首次本地构建 | ✅ 镜像构建成功 |
|
||
| **Day 2–3** | 单实例运行测试 (18006) | ✅ 容器稳定运行 |
|
||
| **Day 4–5** | Docker Compose 双实例测试 | ✅ 两实例无冲突 |
|
||
| **Day 6–7** | 长时间运行测试(持续监控) | ✅ 7 天无异常 |
|
||
|
||
---
|
||
|
||
## ✅ 本地验证完成标准
|
||
|
||
以下全部 ✅ 后,认为第一阶段完成:
|
||
|
||
- [ ] ✅ 代码已提交到 git.tkmind.cn
|
||
- [ ] ✅ 本地 Docker 构建成功(无错误)
|
||
- [ ] ✅ 镜像大小合理(~50–80MB)
|
||
- [ ] ✅ 容器启动正常,`/status` 返回 200
|
||
- [ ] ✅ Session 数据库(SQLite)正常创建
|
||
- [ ] ✅ 容器日志无 panic / 错误
|
||
- [ ] ✅ 两实例并行运行无冲突
|
||
- [ ] ✅ 容器重启后数据持久化
|
||
- [ ] ✅ 运行至少 7 天无异常
|
||
- [ ] ✅ 镜像文件已保存(goosed.tar)
|
||
|
||
---
|
||
|
||
## 🔄 持续开发流程
|
||
|
||
第一阶段期间,如需修改代码:
|
||
|
||
```bash
|
||
# 1. 本地修改代码
|
||
# ...your changes...
|
||
|
||
# 2. 本地测试(如需要重新构建)
|
||
bash scripts/verify-goosed-docker.sh local
|
||
|
||
# 3. 提交代码
|
||
git add .
|
||
git commit -m "fix: ..."
|
||
git push origin main
|
||
|
||
# 4. 继续本地验证
|
||
```
|
||
|
||
---
|
||
|
||
## 📦 镜像交付(第一阶段末)
|
||
|
||
当本地验证通过 1 周后:
|
||
|
||
### 方式 1:保存为文件(最简单)
|
||
|
||
```bash
|
||
# 保存最新验证通过的镜像
|
||
docker save tkmind/goosed:local -o goosed-verified.tar
|
||
|
||
# 准备交付给 103(后续操作)
|
||
ls -lh goosed-verified.tar
|
||
# 约 50–80MB
|
||
```
|
||
|
||
### 方式 2:标记版本
|
||
|
||
```bash
|
||
# 给验证通过的镜像打版本标签
|
||
docker tag tkmind/goosed:local tkmind/goosed:v1.0-local
|
||
|
||
# 后续交付时使用 v1.0-local 标记
|
||
docker save tkmind/goosed:v1.0-local -o goosed-v1.0.tar
|
||
```
|
||
|
||
---
|
||
|
||
## ❓ 常见问题
|
||
|
||
### Q:什么时候推送到 git.tkmind.cn?
|
||
|
||
**A:** 立即推送。这是代码版本管理,与镜像构建独立。镜像是本地产物,不需要推送到 Git。
|
||
|
||
### Q:镜像要保存到哪里?
|
||
|
||
**A:** 本地 Docker 中即可。当需要部署到 103 时,再用 `docker save` 导出为文件。
|
||
|
||
### Q:如果代码有变更怎么办?
|
||
|
||
**A:**
|
||
1. 修改代码 → `git push`
|
||
2. 重新 `bash scripts/verify-goosed-docker.sh local`
|
||
3. 继续测试
|
||
|
||
### Q:第一阶段需要与 103 通信吗?
|
||
|
||
**A:** 不需要。完全本地独立。103 部署是后续的第二阶段。
|
||
|
||
### Q:验证需要多久?
|
||
|
||
**A:** 建议至少 1 周。如果发现问题,修复后重新计时。
|
||
|
||
---
|
||
|
||
## 🛑 何时停止本地验证,考虑 103?
|
||
|
||
当满足以下条件时:
|
||
|
||
- ✅ 本地验证稳定运行 7+ 天
|
||
- ✅ 所有检查清单项都通过
|
||
- ✅ 团队确认 Docker 方案可行
|
||
- ✅ 103 环境已准备就绪(Docker daemon)
|
||
|
||
**不满足上述条件,继续本地验证,不要急着上 103。**
|
||
|
||
---
|
||
|
||
## 📞 遇到问题?
|
||
|
||
参考这些文档:
|
||
|
||
1. **构建失败?** → `docs/goosed-docker-local-verification.md` 的"常见问题"
|
||
2. **交付方式?** → `docs/goosed-local-build-delivery.md` 的"镜像交付"
|
||
3. **测试步骤?** → `docs/goosed-docker-local-verification.md` 的"测试与验证"
|
||
|
||
---
|
||
|
||
**现在:立即推送代码并运行本地构建!**
|