feat(data): 数据库搬到 data/ 目录 + SQLite WAL + 单卷绑定挂载
- config.py 新增 PEAR_DATA_DIR(默认 <项目根>/data),SQLite 库、Flask-Session
统一收进 DATA_DIR;不设时本地开发行为不变
- applications/__init__.py 顶部先 load_dotenv,保证 .env 里的 PEAR_DATA_DIR
在 config 导入时就生效
- extensions/init_sqlalchemy.py 接 SQLite connect 事件:WAL + synchronous=NORMAL
+ busy_timeout=30s(多 worker 写不再撞锁)
- config.py 注入 SQLALCHEMY_ENGINE_OPTIONS(pool_pre_ping + SQLite connect_args
超时;MySQL 路径下自动跳过 connect_args 防止参数错误)
- 新增 alembic 迁移 a47a5d2a3f1b 建 site_nav_click(含 anon_id 字段),
解决之前该表只由 db.create_all 建、不在迁移链里的隐患
- .gitignore / .dockerignore 加 data/ 排除规则(且把 migrations/ 从
ignore 里重新放行 —— 否则新加的迁移进不了库)
- NAS Docker 部署全面重写:
- compose 唯一绑定挂载 ./data:/app/data,宿主 File Station 看得见
- start.sh 自检 data 目录 + 子目录;workers 默认改为 1 threads 8
(SQLite 写串行,单进程最稳)
- 新增 backup.sh:sqlite3 .backup 在线热备(确保 WAL 一致性)+ 压缩
+ 保留 14 天
- Dockerfile 安装 sqlite3 客户端备用,建 /app/data 子目录并 chown
- docs/deployment-nas.md 重写数据持久化章节(路径表 + 热备命令 +
恢复步骤 + 整库迁移 tar/untar 流程)
This commit is contained in:
@@ -16,12 +16,13 @@ ENV TZ=Asia/Shanghai \
|
||||
PIP_DISABLE_PIP_VERSION_CHECK=1 \
|
||||
PIP_NO_CACHE_DIR=1 \
|
||||
PEAR_ENV=pro \
|
||||
PEAR_DATA_DIR=/app/data \
|
||||
FLASK_APP=app.py
|
||||
|
||||
# 安装时区数据 + 健康检查用的 curl
|
||||
# (curl 在 slim 里已有,但保持显式声明便于以后切到 alpine)
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends curl tzdata \
|
||||
&& apt-get install -y --no-install-recommends curl tzdata sqlite3 \
|
||||
&& ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
|
||||
&& echo $TZ > /etc/timezone \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
@@ -39,8 +40,14 @@ RUN pip install -r requirements.txt \
|
||||
# 再 copy 全部源码
|
||||
COPY --chown=appuser:appuser . .
|
||||
|
||||
# 数据目录单独建好并 chown 给 appuser(uid 1001)。
|
||||
# /app/data 由卷挂载覆盖,但容器刚启动时如果宿主目录是空的,
|
||||
# 子目录(backup/ flask_session/ 等)需要 appuser 自己能写。
|
||||
RUN mkdir -p /app/data/backup /app/data/flask_session /app/data/logs /app/data/upload \
|
||||
&& chown -R appuser:appuser /app/data
|
||||
|
||||
# 启动脚本加执行权限
|
||||
RUN chmod +x /app/deploy/nas/start.sh
|
||||
RUN chmod +x /app/deploy/nas/start.sh /app/deploy/nas/backup.sh
|
||||
|
||||
# 切换到非 root
|
||||
USER appuser
|
||||
|
||||
Reference in New Issue
Block a user