refactor: migrate deploy layout and stabilize compose runtime

This commit is contained in:
chengkai3
2026-05-02 12:24:39 +08:00
parent e3164f34ec
commit 85689bf1bd
24 changed files with 745 additions and 568 deletions
+74 -25
View File
@@ -102,42 +102,91 @@
- 行为变化:不再支持 `dispatchMode=scheduler_api` 与独立 scheduler HTTP 网关调用。
- 保持不变:默认任务链路(API 直连 Celery)与 Flower 监控链路。
## Work Log - 浏览器标签图标替换为高压电塔2026-05-02
## Work Log - 切换部署入口到 deploy 目录并删除根 docker-compose.yml2026-05-02
- 背景:
- 需求要求将浏览器标签图标替换为工程内 `高压电塔.png`
- 用户要求将部署结构统一到 `deploy/dev-deploy``deploy/pro-deploy`,并删除根目录 `docker-compose.yml`
- 本次改动(最小闭环)
- 文件:`web/src/app/favicon.ico`
- 使用仓库根目录 `高压电塔.png`200x200)重生成为 ICO,并覆盖现有 `favicon.ico`
- 页面标题与其他元数据未改动。
- 本次改动:
- 新增目录结构:
- `deploy/dev-deploy/{compose.yml,.env,.env.dev}`
- `deploy/pro-deploy/{compose.yml,.env,.env.prod}`
- 本地开发入口切换:
- `package.json``docker:up/down/logs` 改为显式使用 `deploy/dev-deploy/compose.yml` + `deploy/dev-deploy/.env`
- `README.md` Docker 部署说明改为基于 `deploy/dev-deploy`
- `AGENTS.md` 根脚本说明改为指向 `deploy/dev-deploy`
- 部署流水线切换:
- `.github/workflows/main.yml` 改为使用 `deploy/pro-deploy` 结构进行生产部署(不再依赖根 compose)。
- 长期记忆口径更新:
- `MEMORY.md` 中 Docker 命令口径改为 `deploy/dev-deploy` 方案。
- 删除:
- 根目录 `docker-compose.yml`
- 验证:
- `file web/src/app/favicon.ico`
- 结果:`MS Windows icon resource - 1 icon, 200x200 withPNG image data`
- `git diff -- web/src/app/favicon.ico`
- 结果:仅该二进制图标文件发生变更。
- 目录校验:`find deploy -maxdepth 3 -type f | sort` 命中 dev/pro 全套文件。
- 入口校验:`rg` 检查脚本/文档,已无根 compose 作为默认入口
- 风险与影响:
- 影响面仅前端浏览器标签图标资源
- 可能受浏览器 favicon 缓存影响,首次需强刷后看到新图标
- 旧习惯直接执行 `docker compose up -d`(仓库根目录)将失效,必须改为显式 `-f deploy/.../compose.yml`
- workflow 远端部署改为写入并使用 `deploy/pro-deploy`,对旧服务器目录结构有一次性迁移要求
## Work Log - 修复退出登录闪烁2026-05-02
## Work Log - 移除 deploy 中的 nginx 服务2026-05-02
- 背景:
- 当前退出登录会先把前端登录态置空,再触发页面跳转
- 在后台页会先短暂渲染“请先登录”占位,再跳回登录页,造成肉眼可见闪烁。
- 用户确认原工程不需要 nginx 服务,仅需保留 deploy 双目录与 compose/env 结构
- 本次改动(最小闭环)
- 文件:`web/src/components/auth-provider.tsx`
- 调整 `logout` `finally` 收尾顺序:
- 浏览器环境下优先执行 `window.location.replace("/")` 并直接返回;
- 非浏览器环境才执行 `clearAuth()`
- 效果:避免在跳转前先渲染未登录中间态页面。
- 本次改动:
- 删除 `deploy/dev-deploy/compose.yml``deploy/pro-deploy/compose.yml` 中的 `nginx` 服务定义。
- 删除 `deploy/dev-deploy/.env` `deploy/pro-deploy/.env``NGINX_*` 变量。
- 删除 `deploy/dev-deploy/nginx/``deploy/pro-deploy/nginx/` 目录。
- 更新 `.github/workflows/main.yml`,移除 nginx 相关生成、变量与日志采集逻辑
- 验证:
- `docker compose --env-file deploy/dev-deploy/.env -f deploy/dev-deploy/compose.yml config` -> 通过。
- `docker compose --env-file deploy/pro-deploy/.env -f deploy/pro-deploy/compose.yml config` -> 通过。
- 风险与影响:
- 影响面仅前端退出流程
- 行为变化为“直接跳登录页”,不会改变后端登出接口调用逻辑。
- 部署后不再提供内置反向代理与 HTTPS 终止能力,如需网关需由外部 LB/Nginx/Ingress 承接
- 验证建议:
- 已登录状态下从任意后台页面点击“退出登录”,预期直接到登录页,不再出现“请先登录”闪屏。
## Work Log - deploy 目录统一托管组件配置与数据挂载(2026-05-02)
- 背景:
- 用户目标是将各组件配置与数据文件集中挂载到 `deploy` 目录,便于统一管理;`nginx` 仅为示例并非必需。
- 本次改动:
- `deploy/dev-deploy/compose.yml``deploy/pro-deploy/compose.yml` 改为目录挂载:
- DB`./data/postgres -> /var/lib/postgresql/data`
- Redis`./data/redis -> /data`
- MinIO`./data/minio -> /data`
- API/Worker/Beat`./data/app -> /app/data`
- Celery Beat 调度文件持久化:
- `--schedule=/app/data/celery/beat-schedule`
- 删除命名卷定义,改为显式 bind mount。
- 新增目录骨架(含 `.gitkeep`):
- `deploy/dev-deploy/data/{postgres,redis,minio,app/celery}`
- `deploy/pro-deploy/data/{postgres,redis,minio,app/celery}`
- 验证:
- `docker compose --env-file deploy/dev-deploy/.env -f deploy/dev-deploy/compose.yml config` -> 通过。
- `docker compose --env-file deploy/pro-deploy/.env -f deploy/pro-deploy/compose.yml config` -> 通过。
- 风险与影响:
- 宿主机目录权限需允许容器读写(尤其 PostgreSQL/Redis/MinIO)。
- 生产环境若采用只读部署目录,需单独放开 `deploy/*/data/**` 写权限。
## Work Log - dev-deploy 环境注入文件更名(2026-05-02
- 背景:
- `dev-deploy` 使用 `.env.prod` 命名语义不清晰。
- 本次改动:
-`deploy/dev-deploy/.env.prod` 重命名为 `deploy/dev-deploy/.env.dev`
-`deploy/dev-deploy/compose.yml``env_file` 引用同步改为 `.env.dev`
-`README.md` 中相关命令与说明同步改为 `.env.dev`
- 验证:
- `docker compose --env-file deploy/dev-deploy/.env -f deploy/dev-deploy/compose.yml config` -> 通过。
- 风险与影响:
- 本地若仍保留旧文件名 `.env.prod`,将不再被 dev compose 自动读取。