Skip to content

hohu migrate ​

在 Docker 部署环境单独运行数据库迁移与基础数据同步。开发项目初始化使用 hohu init;正常部署与镜像更新已经包含迁移,通常无需另行执行本命令。

前提条件 ​

  • Docker 与 Docker Compose 可用,已初始化 .hohu/deploy/。
  • 部署 .env 指向正确数据库和配套应用镜像,迁移镜像可用或可拉取。
  • 已按升级与恢复完成需要的备份,确认迁移起点和维护窗口。

在部署配置所在目录或其子目录运行。

用法 ​

bash
hohu migrate

没有额外业务参数,不接受 --init、--no-migrate 或 --image-source。

执行过程与结果 ​

  1. 加载部署配置,显式启动 Compose 的 postgres 和 redis 服务。
  2. 使用一次性 db-migrator 容器执行迁移与种子同步,完成后移除该容器。
  3. 成功时显示迁移完成;本命令不更新源码、不重建应用镜像,也不重启 API/Web。

种子同步保留已有密码、自定义内容和授权。执行后核对迁移日志及数据库版本,按部署计划启动或更新应用,并验证登录和目标功能。

当前限制 ​

独立 migrate 仍显式启动内置 PostgreSQL/Redis,不按 ENABLE_POSTGRES、ENABLE_REDIS 判断是否跳过,也不调用部署命令的镜像换源流程。

使用外部数据库/Redis,或需要 --image-source 时,优先使用 hohu deploy 或 hohu deploy pull 的集成迁移流程。执行前确认目标镜像和配置,这些命令还会启动或更新应用。

排错 ​

现象处理方式
提示未初始化检查运行目录和 .hohu/deploy/
基础服务启动失败检查内置服务端口、存储与外部服务配置限制
迁移镜像无法获取核对镜像地址与标签;换源需求使用部署集成流程
数据库连接或迁移失败保留错误和日志,检查目标数据库、权限及迁移版本;确认恢复方式后重试

迁移失败后不要直接启动依赖新结构的应用,也不要删除数据库或修改迁移记录来绕过错误。