fix(docker): 预构建镜像持久化数据库/笔记,修升级丢配置与历史

README 的 docker run 只挂了 -v …:/app/backend/data(仅媒体缓存),但
SQLite 库在 /app/backend/bili_note.db、笔记在 /app/backend/note_results
都不在该卷下 → 用户删容器重建(如 docker pull 升级镜像)会丢失 LLM
供应商配置和全部笔记历史。

- Dockerfile.complete:DATABASE_URL 重定向到 /app/backend/data/bili_note.db、
  NOTE_OUTPUT_DIR 改到 data/note_results,并预建 /app/backend/data 目录;
  两条 supervisord environment 行同步(兜底默认值 + %(ENV_*)s 透传)。
- README:docker run 改挂 data(库+笔记)/ config(供应商·Cookie·转写配置)/
  static(截图)/ models(模型缓存,可选)四个数据卷,并警告不要挂整个
  /app/backend(命名卷会固化镜像内代码,导致 docker pull 升级不生效)。
- docker-build.yml:同步发布说明里 echo 的 run 命令。

截图仍留在 /app/backend/static(static_dir 硬编码服务,不能重定向),单独挂卷。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
huangjianwu
2026-05-22 13:30:42 +08:00
parent b53cafda5a
commit edfd6e4765
3 changed files with 22 additions and 3 deletions

View File

@@ -163,10 +163,17 @@ docker pull ghcr.io/jefferyhcool/bilinote:latest
docker run -d -p 80:80 \
-v bilinote-data:/app/backend/data \
-v bilinote-config:/app/backend/config \
-v bilinote-static:/app/backend/static \
-v bilinote-models:/app/backend/models \
--name bilinote \
ghcr.io/jefferyhcool/bilinote:latest
```
上面四个卷分别持久化:`data`SQLite 数据库 + 生成的笔记)、`config`LLM 供应商配置 / Cookie / 转写设置)、`static`(笔记引用的视频截图)、`models`Whisper 模型缓存,可选,避免每次重新下载)。这样 `docker pull` 升级新镜像、删旧容器重建后,配置和历史都不会丢。
> ⚠️ **不要**用 `-v 卷名:/app/backend` 挂整个后端目录——命名卷会用首次启动时的镜像内容固化,之后 `docker pull` 升级也会被旧代码盖住,导致「升级不生效」。只挂上面这些数据子目录即可。
访问:`http://localhost`
也可以使用 docker-compose 本地构建:
@@ -302,10 +309,17 @@ docker pull ghcr.io/jefferyhcool/bilinote:latest
# 运行容器
docker run -d -p 80:80 \
-v bilinote-data:/app/backend/data \
-v bilinote-config:/app/backend/config \
-v bilinote-static:/app/backend/static \
-v bilinote-models:/app/backend/models \
--name bilinote \
ghcr.io/jefferyhcool/bilinote:latest
```
上面四个卷分别持久化:`data`SQLite 数据库 + 生成的笔记)、`config`LLM 供应商配置 / Cookie / 转写设置)、`static`(笔记引用的视频截图)、`models`Whisper 模型缓存,可选,避免每次重新下载)。这样 `docker pull` 升级新镜像、删旧容器重建后,配置和历史都不会丢。
> ⚠️ **不要**用 `-v 卷名:/app/backend` 挂整个后端目录——命名卷会用首次启动时的镜像内容固化,之后 `docker pull` 升级也会被旧代码盖住,导致「升级不生效」。只挂上面这些数据子目录即可。
访问:`http://localhost`
也可以使用 docker-compose 本地构建: