1.3 KiB
1.3 KiB
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 哈希,用于手工建号等运维场景 |
数据库结构如何演进
- 新增表:在
backend/app/models/定义模型即可,create_all会自动建表。 - 新增列:在
backend/app/core/migrations.py追加一条(表名, 列名, "ALTER TABLE ... ADD COLUMN ..."),启动时幂等补齐。 - 新增种子数据(菜单/角色等):写进
init_db.py,保证全新部署与存量部署结果一致。
历史遗留的一次性
*.sql/add_*.py补丁脚本已在 v0.9.9 → v1.0.0 整理中删除, 它们的语义已完全被上述幂等机制覆盖。