AI 摘要

针对Logto MySQL Docker容器升级难题,本文提供了一种无损升级方案。通过修改Dockerfile中的Command和EntryPoint参数,阻塞现有容器并执行数据库结构迁移操作。具体步骤包括使用npx @logto/cli db alteration deploy命令,并结合已知版本信息完成升级。该方法确保用户无需重新安装即能达到最新版本,解决了传统方式因 exit 0 终止而无法操作的问题。实践表明,此方案有效降低了升级风险并提高了使用效率。

前言

相信不少人被logto升级烦过吧,从用logto的开源项目lobe-chat里提了多少有关logto的issue就看得出来

甚至到连贡献者都跑出来承诺说要把logto删掉换成其他供应商了

感觉一方面可能非专业搞docker的用户有点多,另一方面logto官方对于docker升级自动迁移sql结构的缺失确实也导致社区对logto的怨声载道。故写这篇文章给和我一样掉进升级坑里的logto用户如何无损升级

过程

官方的文档是有关于数据库更改的教程的,但是绝大多数docker用户其实并无法参照,因为logto数据库一旦报错是直接exit 0终止容器运行,你连ssh都进不去,更何谈执行docs给出的命令

所以我们应该做的就是阻塞logto docker的运行,让我们能够执行迁移命令。

修改logto docker的Command和EntryPoint,如下图

这样我们就成功阻塞住容器,进入ssh执行迁移命令
这个命令的最后面的版本要看你拉取容器的版本去填写,我是latest,官网最新版本是1.20.0

npx @logto/cli db alteration deploy 1.20.0

最后把上面的Command和EntryPoint改回之前的也就是默认值,再重新启动一次logto docker,就ok了