基于Docker Compose升级服务器Directus及数据库兼容性管理
问题解答:Directus部署中Postgis与Redis的安全升级方案
是否应该升级?
必须升级,理由如下:
- Postgis [13-master]:这是开发分支镜像,并非稳定生产版本,本身存在未知稳定性问题,且安全检测出的隐患大概率是未修复的开发阶段漏洞,完全不适合生产环境。
- redis:6:该版本存在多个已公开的CVE安全漏洞(如命令注入、权限绕过等),攻击者可利用这些漏洞获取服务器权限或篡改数据,风险极高。
升级步骤与兼容性保障
一、升级前核心准备
- 全量数据备份
- Postgis数据库:执行命令导出完整备份:
docker exec <你的Postgis容器名> pg_dump -U <Directus数据库用户> <Directus数据库名> > directus_db_backup.sql - Redis:如果开启了持久化,直接备份Redis挂载的数据目录(如
./redis/data);或执行命令生成备份文件后复制到本地:docker exec <你的Redis容器名> redis-cli SAVE docker cp <你的Redis容器名>:/data/dump.rdb ./redis_backup.rdb
- Postgis数据库:执行命令导出完整备份:
- 确认版本兼容
Directus对PostgreSQL(含Postgis)的稳定版本均提供良好支持,建议选择与PostgreSQL 13匹配的Postgis稳定版(如postgis/postgis:13-3.4);Redis推荐升级至7.x稳定版(如redis:7.2),Directus完全兼容该版本。
二、Postgis升级流程
- 修改
docker-compose.yml中的Postgis镜像标签,替换为对应稳定版:services: postgis: image: postgis/postgis:13-3.4 # 替换原13-master标签 # 其他配置保持不变 - 停止并移除旧容器:
docker-compose stop postgis docker-compose rm postgis - 启动新容器并完成初始化:
docker-compose up -d postgis - 兼容性验证
- 进入容器检查Postgis版本:
docker exec -it <新Postgis容器名> psql -U <Directus数据库用户> <Directus数据库名> -c "SELECT postgis_version();" - 执行Directus数据库迁移(确保 schema 兼容):
docker-compose exec directus npx directus database migrate:latest - 访问Directus后台,测试数据查询、新增等核心功能,确认数据完整无异常。
- 进入容器检查Postgis版本:
三、Redis升级流程
- 修改
docker-compose.yml中的Redis镜像标签:services: redis: image: redis:7.2 # 替换原redis:6标签 # 其他配置保持不变 - 停止并移除旧容器:
docker-compose stop redis docker-compose rm redis - 启动新容器:
docker-compose up -d redis - 兼容性验证
- 测试Redis连接:
返回docker exec -it <新Redis容器名> redis-cli pingPONG则连接正常。 - 检查Directus的缓存、会话功能是否正常(如刷新后台页面、测试用户登录状态),查看容器日志确认无连接报错:
docker logs <新Redis容器名>
- 测试Redis连接:
四、后续检查
- 重新运行安全插件扫描,确认安全隐患已消除
- 持续观察服务日志24小时,排查是否有兼容性报错
- 测试Directus全量核心功能(数据CRUD、文件管理、权限控制等),确保服务稳定
内容的提问来源于stack exchange,提问作者Sana Dev
相关产品推荐
相关产品推荐

