6 Commits

Author SHA1 Message Date
imbytecat f8af18cff5 fix(docker): 移除 stale COPY patches 行修复 docker build
d9210b3 升级 TanStack Start 至 1.167.48 时删除了 patches/ 目录
(upstream PR #7249 已修),但漏掉同步更新 Dockerfile,导致
docker build 报 "/patches": not found 失败。

验证:docker compose build app 通过。
2026-04-25 16:37:43 +08:00
imbytecat 7e27640a26 feat(deploy): migrations 嵌入二进制,实现真单文件部署
- embed-migrations.ts:扫 ./drizzle/meta/_journal.json,生成 src/server/db/migrations.gen.ts,每条 SQL 通过 `import sql_<idx> from '../../../drizzle/<tag>.sql' with { type: 'text' }` 在 bun build --compile 时被静态嵌入二进制
- migrate.ts 重写:runtime 用 createHash('sha256') 计算迁移哈希,仅用 db.execute(sql) + db.transaction() 公开 API 写入 drizzle.__drizzle_migrations 簿记表(不依赖 @internal 的 db.dialect/db.session)
- db:generate 链 db:embed,保证 SQL 改动总是同步到 migrations.gen.ts
- Dockerfile 删 COPY drizzle/,binary 是部署唯一 artifact
- 同步 README / AGENTS / biome.json
2026-04-25 14:05:58 +08:00
imbytecat 2c5bceb826 fix(deploy): 端到端跑通编译二进制 + docker compose
端到端验证时发现 4 处细节,一起补上:

1. bin.ts 漏了 default: 'serve'——CMD ["./server"] 会直接吐 help 而
   不是起服务(在 compose 里 app 立刻 exit)。citty 原生支持 default
2. Dockerfile 在 bun install 之前就要 COPY patches/,否则 package.json
   的 patchedDependencies 找不到补丁文件,install 失败
3. drizzle/ 目录在仓库里必须存在(带 .gitkeep),否则 Dockerfile 末尾
   COPY drizzle/ 到运行镜像会失败
4. migrate.ts 之前只检查 ./drizzle 目录是否存在就跳过——空目录时仍会
   进到 drizzle 的 readMigrationFiles,报 Can't find meta/_journal.json。
   改成检查 meta/_journal.json 是否存在,更准确地区分"还没生成过迁移"
   与"有迁移待应用"

验证路径:
- docker compose up -d --build → migrate 完成退出 → app 健康
- curl /api/spec.json → 200,OpenAPI 文档含 todo.{list,create,update,remove}
2026-04-24 20:43:36 +08:00
imbytecat 02757226f7 chore(deps): 锁定 Bun 版本并升级依赖
- Dockerfile 与 mise.toml 固定 bun 至 1.3.13
- 升级 ORPC/TanStack/Biome/Vite/TypeScript 等依赖
- drizzle-orm 与 drizzle-kit 回退至稳定版
2026-04-24 19:50:17 +08:00
imbytecat 77b3484415 refactor: 改用 Nitro 插件实现启动时数据库迁移 2026-04-02 03:42:45 +08:00
imbytecat ed770909ef chore: 添加 Docker 打包和 Compose 编排支持 2026-04-02 02:43:21 +08:00