ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

如何用Openship实现数据库零停机发布:迁移与部署联动实战

2026/9/15 18:42:35 拓冰建站 浏览量
如何用Openship实现数据库零停机发布:迁移与部署联动实战 如何用Openship实现数据库零停机发布迁移与部署联动实战【免费下载链接】openshipSelf-hosted deployment platform项目地址: https://gitcode.com/GitHub_Trending/ope/openship用Openship开源自托管部署平台发布带数据库的应用时最让人紧张的就是那一步新版本上线但 schema 还没迁移或者迁移跑挂了生产库直接遭殃。这篇文章手把手教你用 Openship 自带的部署前自动备份 部署后迁移任务搭出一套数据库零停机发布流程——迁移与部署联动出问题还能一键回滚。为什么数据库是发布中最大的一环如果你的项目里有MySQL / Postgres这类带持久化卷Docker volume的服务官方文档 database-migrations.mdx 提醒了两件事初始化脚本不会重复执行容器里docker-entrypoint-initdb.d中的脚本只在卷为空第一次初始化时运行。数据库已经有数据后这些脚本永远不会再跑所以不能指望它来做 schema 迁移。有状态容器可能被重建全栈部署时数据库容器可能被 recreate。好消息是命名卷会被保留、数据不丢坏消息是重建那一刻正是最需要安全网的时候。好消息是Openship 不需要你手写复杂的发布脚本它给了你三个现成的积木。三件套只部署变更 部署前备份 部署后迁移① 无关联改动就别碰数据库最快的手动优化后端代码变了不应该顺带重建你的数据库容器。用选择性部署只发变更的服务openship deploy --service-ids api,web没点名的服务比如db会原容器继续运行数据纹丝不动。多服务细节可参考 compose-multi-service.mdx。② 每次发布前自动备份回滚安全网在项目Backup页面对数据库服务创建备份策略Backup policy关键是勾选Pre-deploy trigger部署前触发。它的工作方式很讲究详见 backups-restore.mdx 与源码 pre-deploy.ts备份在新版本构建成功、但破坏性切换之前执行快照捕获的是旧容器的数据——正是你回滚时想恢复的状态所有走部署通道的路径手动按钮、Webhook 自动部署、CLI 部署、回滚重建都会被覆盖备份是尽力而为的慢或失败的备份不会阻塞发布这类运行在备份历史中统一标记为pre_deploy方便你事后精确找回切换前快照。备份目的地支持 S3 兼容存储、SFTP、已有服务器或本地磁盘密钥静态加密存储。③ 部署成功后跑迁移任务联动核心给已有卷应用 schema/数据迁移用Jobs里的一个命令任务实现jobs.mdx打开Jobs新建一个command类型的任务触发器选Deploy succeeded部署成功事件——迁移只在新版本真正上线后才执行命令指向你的迁移工具例如 Postgresdocker run --rm --network project-network \ -e DATABASE_URLpostgres://user:passdb:5432/app \ ghcr.io/amacneil/dbmate:latest up每次任务运行都会记录历史何时执行、是否成功、耗时与完整输出出问题有据可查。一次完整的安全发布长什么样按官方文档给出的顺序整套流程是阶段动作由谁触发1部署前备份pre_deploy快照备份策略自动触发2新版本构建并上线openship deploy/ Webhook 自动部署3迁移任务对新版本卷执行迁移Jobs Deploy succeeded 事件4迁移失败从备份历史恢复pre_deploy快照再叠加一层保险rollback-redeploy.mdx 说明回滚只恢复代码绝不触碰数据库与卷数据。也就是说即使新代码有 bug一键回滚到上一个健康版本Snapshotted 版本秒级恢复、无需重新构建而数据库始终由你的迁移策略掌控。边界与最佳实践 ⚠️目前没有迁移门禁Openship 暂不提供迁移未完成则阻止应用启动的预部署钩子官方 roadmap 上的一等公民特性。迁移任务是在新容器上线之后运行的。如果你的应用必须先迁移 schema 才能启动两个选择在镜像 entrypoint 里先跑migrate再exec启动应用或者让应用能容忍短暂的迁移窗口。发布前把上一个可靠版本Pin固定住回滚永远一键可达、无需重建。小结用 Openship 做数据库零停机发布不需要自己造轮子选择性部署--service-ids无关联改动不碰数据库备份策略开启Pre-deploy trigger每次发布前自动留快照Jobs 里挂一个Deploy succeeded迁移任务迁移与部署天然联动出问题代码回滚不动数据 数据恢复pre_deploy快照双保险。完整资料入口database-migrations.mdx、backups-restore.mdx、rollback-redeploy.mdx。【免费下载链接】openshipSelf-hosted deployment platform项目地址: https://gitcode.com/GitHub_Trending/ope/openship创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考