hohu migrate
在 Docker 部署环境单独运行数据库迁移与基础数据同步。开发项目初始化使用 hohu init;正常部署与镜像更新已经包含迁移,通常无需另行执行本命令。
前提条件
- Docker 与 Docker Compose 可用,已初始化
.hohu/deploy/。 - 部署
.env指向正确数据库和配套应用镜像,迁移镜像可用或可拉取。 - 已按升级与恢复完成需要的备份,确认迁移起点和维护窗口。
在部署配置所在目录或其子目录运行。
用法
bash
hohu migrate没有额外业务参数,不接受 --init、--no-migrate 或 --image-source。
执行过程与结果
- 加载部署配置,显式启动 Compose 的
postgres和redis服务。 - 使用一次性
db-migrator容器执行迁移与种子同步,完成后移除该容器。 - 成功时显示迁移完成;本命令不更新源码、不重建应用镜像,也不重启 API/Web。
种子同步保留已有密码、自定义内容和授权。执行后核对迁移日志及数据库版本,按部署计划启动或更新应用,并验证登录和目标功能。
当前限制
独立 migrate 仍显式启动内置 PostgreSQL/Redis,不按 ENABLE_POSTGRES、ENABLE_REDIS 判断是否跳过,也不调用部署命令的镜像换源流程。
使用外部数据库/Redis,或需要 --image-source 时,优先使用 hohu deploy 或 hohu deploy pull 的集成迁移流程。执行前确认目标镜像和配置,这些命令还会启动或更新应用。
排错
| 现象 | 处理方式 |
|---|---|
| 提示未初始化 | 检查运行目录和 .hohu/deploy/ |
| 基础服务启动失败 | 检查内置服务端口、存储与外部服务配置限制 |
| 迁移镜像无法获取 | 核对镜像地址与标签;换源需求使用部署集成流程 |
| 数据库连接或迁移失败 | 保留错误和日志,检查目标数据库、权限及迁移版本;确认恢复方式后重试 |
迁移失败后不要直接启动依赖新结构的应用,也不要删除数据库或修改迁移记录来绕过错误。
