nex_docus/backend/scripts
mula.liu 6831bd4831 解决编辑模式的问题 2026-10-01 15:21:38 +08:00
..
README.md 解决编辑模式的问题 2026-10-01 15:21:38 +08:00
generate_password.py 0.9.1 2025-12-20 19:18:59 +08:00
init_db.py 解决编辑模式的问题 2026-10-01 15:21:38 +08:00

README.md

backend/scripts —— 随镜像发布的运行时脚本

这里的脚本会被 backend/Dockerfile 的 COPY . . 打进后端镜像,并在容器启动时执行:

CMD ["sh", "-c", "python scripts/init_db.py && exec uvicorn main:app --host 0.0.0.0 --port 8000"]

因此它们必须留在 backend/ 内(Compose 的 build context 就是 ./backend, 无法 COPY 仓库根的 scripts/)。仓库层面的运维脚本请放到根目录 scripts/。

脚本 用途
init_db.py 幂等地建表(Base.metadata.create_all)、执行结构迁移(app.core.migrations.migrate_schema)、初始化角色/菜单/管理员
generate_password.py 生成管理员密码的 bcrypt 哈希,用于手工建号等运维场景

数据库结构如何演进

  1. 新增表:在 backend/app/models/ 定义模型即可,create_all 会自动建表。
  2. 新增列:在 backend/app/core/migrations.py 追加一条 (表名, 列名, "ALTER TABLE ... ADD COLUMN ..."),启动时幂等补齐。
  3. 新增种子数据(菜单/角色等):写进 init_db.py,保证全新部署与存量部署结果一致。

历史遗留的一次性 *.sql / add_*.py 补丁脚本已在 v0.9.9 → v1.0.0 整理中删除, 它们的语义已完全被上述幂等机制覆盖。