diff --git a/.gitignore b/.gitignore index d6d0bae8..f39aba68 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ coverage/ types/deno.d.ts apps/web/test/screenshots/ data/ +docker-compose.override.yml diff --git a/Dockerfile b/Dockerfile index 929234fe..3e4dae2b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ # PostgreSQL 不在本镜像内,见 docker-compose.yml。 # 构建:docker build -t uhd-media-tool . 运行时版本锁定 Deno 2.9.7(ADR-004) # ffprobe 取自静态构建镜像(单个 static-pie 二进制,约 135 MB;Debian 的 ffmpeg 包要拉 200+ 个依赖、约 450 MB) -ARG FFPROBE_IMAGE=mwader/static-ffmpeg:7.1.1 +ARG FFPROBE_IMAGE=mwader/static-ffmpeg:9.0.2 FROM ${FFPROBE_IMAGE} AS ffprobe FROM denoland/deno:2.9.7 AS build diff --git a/docs/plan/03-decoupling-audit.md b/docs/plan/03-decoupling-audit.md index 93b5b836..15a4a436 100644 --- a/docs/plan/03-decoupling-audit.md +++ b/docs/plan/03-decoupling-audit.md @@ -25,5 +25,5 @@ | P1 `POST /organization-records` walk 上限 | 已完成(f9c20c6) | `ORGANIZE_WALK_MAX_FILES`(5000);dryRun 超出返回 `truncated: true`(计划只含前 N 个),正式执行 `too_many_files` 失败 | | P2 copy highWaterMark / sha256 子进程 / 打点 | 已完成(f9c20c6) | 读写流 1 MiB;强制全量 sha256(复制后回读、目标已存在比对、跨卷恢复、计划期同尺寸目标)走 `Deno.Command("sha256sum")`,不可用(未安装 / 无 --allow-run)回退进程内流式,结果记 `hashVia`,`sha256Stats()` 计数;executeRecord 每文件打 `organize.transfer` 日志(耗时/字节/MB/s/hashVia) | | P2 worker 事件循环延迟探针 | 已完成(473c5e9) | 1s 采样,偏差 > 5s warn + 计数,随心跳事件发 `loopLagWarnings/maxLoopLagMs` | -| 打包遗留 | 已完成(f6457a2、3792868) | 镜像带静态 ffprobe(mwader/static-ffmpeg:7.1.1),编译 `--allow-run=ffprobe,sha256sum`;`settings.agent.sessionDir`(null = DATA_DIR/agent-sessions)进设置页;镜像压缩 107→160.5 MB(ffprobe 层 135 MB 未压缩);umtw4d 临时部署验证 health、三进程、ffprobe/sha256sum 可调用 | +| 打包遗留 | 已完成(f6457a2、3792868) | 镜像带静态 ffprobe(mwader/static-ffmpeg:9.0.2),编译 `--allow-run=ffprobe,sha256sum`;`settings.agent.sessionDir`(null = DATA_DIR/agent-sessions)进设置页;镜像压缩 107→160.5 MB(ffprobe 层 135 MB 未压缩);umtw4d 临时部署验证 health、三进程、ffprobe/sha256sum 可调用 | | 未做 | 遗留 | `GET /inventory/media-servers` 串行 Emby 仍在请求内(审计列出但不在 W4-D 清单);invoke 超时后底层调用继续跑完(handler 不全认 signal) | diff --git a/docs/runbook/deploy.md b/docs/runbook/deploy.md index 0ca701df..dd9a6a82 100644 --- a/docs/runbook/deploy.md +++ b/docs/runbook/deploy.md @@ -13,7 +13,7 @@ APP_VERSION=v0.1.0 docker compose build # 版本号写 - 多阶段:`denoland/deno:2.9.7`(装依赖 → web 构建 → server 编译)→ `debian:trixie-slim` 运行镜像。 - 运行镜像只额外装 `gosu`(降权)与 `postgresql-client`(备份/恢复用 pg_dump/pg_restore/psql,17 版客户端兼容 16 版服务端), - 外加 `/usr/local/bin/ffprobe`:从 `mwader/static-ffmpeg:7.1.1` 拷单个静态二进制(约 135 MB;Debian `ffmpeg` 包要 200+ 个依赖约 450 MB)。 + 外加 `/usr/local/bin/ffprobe`:从 `mwader/static-ffmpeg:9.0.2` 拷单个静态二进制(约 135 MB;Debian `ffmpeg` 包要 200+ 个依赖约 450 MB)。 换来源用 `--build-arg FFPROBE_IMAGE=<含 /ffprobe 的镜像>`。 - `/app` 下的二进制、静态产物、脚本全部 root 属主只读;运行用户改不了它们。 - 二进制编译时固定权限:`--allow-net --allow-env --allow-sys --allow-read --allow-write --allow-run=ffprobe,sha256sum,/app/umt-server`