Docker部署的Directus实例升级至10.11.1失败,求解决方法
解决Directus Docker实例升级后崩溃无法执行迁移的问题
问题背景
在DigitalOcean托管的4个Directus v10.10.4实例升级至v10.11.1后崩溃,返回502错误,无法通过docker exec进入容器执行官方要求的数据库迁移命令。
解决方案
方法1:直接用新版本镜像执行迁移(无需启动完整服务)
这是最直接的处理方式,无需启动故障容器,直接挂载配置文件运行迁移命令:
- 停止当前故障容器:
docker stop my.domain.tld - 找到宿主机上该实例的
.env配置文件路径(比如/opt/directus/instance-1/.env),执行迁移命令:docker run --rm \ -v /opt/directus/instance-1/.env:/directus/.env \ directus/directus:10.11.1 \ npx directus database migrate:latest - 迁移完成后,启动新版本容器:
docker start my.domain.tld
如果使用Docker Compose部署,步骤更简洁:
- 进入Compose文件所在目录,停止服务:
docker-compose stop directus - 执行迁移:
docker-compose run --rm directus npx directus database migrate:latest - 启动新版本服务:
docker-compose up -d
方法2:回滚至旧版本,再完成迁移升级
若方法1遇到配置挂载问题,可先回滚到可用版本:
- 停止故障容器:
docker stop my.domain.tld - 启动v10.10.4版本容器(确保数据卷和配置挂载与之前一致):
(Docker Compose用户修改Compose文件的镜像版本为docker run -d \ --name my.domain.tld \ -v /opt/directus/instance-1/.env:/directus/.env \ -v /opt/directus/instance-1/uploads:/directus/uploads \ directus/directus:10.10.410.10.4,执行docker-compose up -d) - 确认服务正常访问后,重复方法1的迁移步骤,完成后启动v10.11.1容器。
后续升级注意事项
- 升级前务必备份数据库(DigitalOcean可使用快照或数据库自带备份工具)
- 严格遵循Docker部署的升级流程:先拉取新版本镜像→停止旧服务→执行数据库迁移→启动新版本服务,避免直接换镜像启动导致崩溃
- 4个实例逐个处理,避免同时操作引发资源冲突
内容的提问来源于stack exchange,提问作者Robert Wildling
相关产品推荐
相关产品推荐

