bwstudio
|
4f3f26e0ed
|
docs(deploy): 补充 deploy/nas/DEPLOY.md 使用手册
|
2026-09-07 21:11:26 +08:00 |
|
bwstudio
|
fff78ef336
|
feat(deploy): 新增一键部署脚本 deploy/nas/deploy.py
- 源码打包 → SFTP 上传 → 解包覆盖 → 同步 favicon 种子 → 构建镜像 → 启动容器 → 健康检查
- 跳过禁止项目:.git / venv / data / .env / *.db / __pycache__ / 日志 / 图标缓存种子等
- 保留远程 .env 与 deploy/nas/data 数据卷(属主 uid=1001)
- 参数:
--no-build 只更新代码重启容器(不改依赖时最快)
--no-cache 强制不用 Docker 层缓存
--pull 强制拉取基础镜像(默认不拉:NAS registry 常 401,本地缓存已够用)
--icons-only 只同步 favicon 种子
--check 只看远端状态
--pack-only 只打包不上传(用于预览包内容)
- 临时包放 /tmp 目录避免项目根污染,失败也不影响部署结果
- 输出末尾打印旧/新镜像 ID 对比,方便判断缓存命中情况
|
2026-09-07 21:11:07 +08:00 |
|
bwstudio
|
be99b8a925
|
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 流程)
|
2026-09-06 19:43:28 +08:00 |
|
bwstudio
|
98edfdaf2d
|
feat(deploy): 个人 NAS 单机 Docker 部署方案
适用:内网 / 家庭 / 小团队(≤50 并发),无 K8s 需求。
特性:单容器 + SQLite + 端口暴露,最小维护成本。
新增:
- deploy/nas/Dockerfile: python:3.11-slim 基础镜像 + 非 root + HEALTHCHECK
- deploy/nas/start.sh: flask db upgrade 幂等迁移 + gunicorn (2 workers × 4 threads)
- deploy/nas/docker-compose.yaml: 单服务 + 4 个命名卷 (db/logs/session/upload) + 资源限制
- docs/deployment-nas.md: 完整部署/备份/升级/排障指南
完善:
- .env.example: 改为生产环境导向 (PEAR_ENV=pro,SECRET_KEY 必填)
- .dockerignore: 排除 deploy/dev (开发用容器配置)、tests/截图、一次性脚本
- applications/view/public/__init__.py: 注释说明 /healthz 已在 applications/view/health.py 注册
复用现有:
- /healthz 接口 (applications/view/health.py) 含 DB 探活,DB 不可达返回 503
→ 容器 HEALTHCHECK 直接用 /healthz 即可
⚠️ 本机无 docker,未执行 docker build 验证;已静态校验 YAML/bash 语法、
文件路径、.env 字段消费、ProConfig 严格性、/healthz 端点可用性。
首次 NAS 上部署时跑一遍文档步骤即可。
|
2026-09-06 18:35:31 +08:00 |
|
不胜舟
|
97eda740fe
|
区分测试生产环境部署配置
|
2026-01-16 19:21:30 +08:00 |
|
不胜舟
|
372b0030c3
|
重构 admin 初始化:改为 JSON 配置,增加导入导出功能
|
2026-01-16 18:48:57 +08:00 |
|