本地DotCMS 2.5.1升级至Docker化23.01的过渡方案咨询
DotCMS 2.5.1(本地Oracle)升级至23.01(Docker PostgreSQL)最优方案
一、本地2.5.1迁移至21.06 Docker(Oracle过渡)
因为21.06是最后支持Oracle的版本且仅提供Docker镜像,直接用镜像完成过渡升级:
- 备份本地全量资源
- 导出Oracle数据库:用
expdp命令全量导出所有schema、数据、存储过程,示例命令:expdp your-dotcms-user/your-pass@your-oracle-sid schemas=dotcms dumpfile=dotcms_251_backup.dmp logfile=expdp_log.log - 备份本地DotCMS的
assets目录、dotserver/config下的自定义配置文件(如dotmarketing-config.properties),以及所有自定义主题、插件文件。
- 导出Oracle数据库:用
- 启动21.06 Docker容器并关联Oracle
- 拉取镜像:
docker pull dotcms/dotcms:21.06 - 启动容器时挂载本地备份的
assets目录,通过环境变量配置Oracle连接(和本地2.5.1的数据库参数一致),示例启动命令:docker run -d \ -p 8080:8080 \ -v /path/to/your/local/assets:/data/assets \ -e DB_TYPE=ORACLE \ -e DB_HOST=your-oracle-ip \ -e DB_PORT=1521 \ -e DB_NAME=your-oracle-sid \ -e DB_USERNAME=dotcms-user \ -e DB_PASSWORD=dotcms-pass \ dotcms/dotcms:21.06
- 拉取镜像:
- 完成升级与验证
- 将之前导出的
dotcms_251_backup.dmp导入到Oracle数据库,确保容器能正常访问该库。 - 查看容器日志跟踪升级进度:
docker logs -f your-container-id,等待自动升级脚本执行完成。 - 登录21.06后台,检查内容、资产、自定义配置是否正常,测试自定义主题和插件的运行状态。
- 将之前导出的
- 同步个性化设置
将本地备份的dotserver/config下的自定义配置文件复制到容器对应路径,或直接挂载本地配置目录到容器的/data/dotserver/config;自定义插件需重新编译适配21.06版本后,通过后台上传安装。
二、21.06 Docker(Oracle)迁移至23.01 Docker(PostgreSQL)
- 备份21.06数据
- 再次用
expdp导出升级后的21.06 Oracle数据库。 - 备份容器内的
assets目录和配置文件。
- 再次用
- 准备PostgreSQL环境
- 启动PostgreSQL容器:
docker run -d \ -p 5432:5432 \ -e POSTGRES_USER=dotcms \ -e POSTGRES_PASSWORD=your-postgres-pass \ -e POSTGRES_DB=dotcms \ postgres:14 - 进入PostgreSQL容器,创建必要扩展:
CREATE EXTENSION IF NOT EXISTS hstore; CREATE EXTENSION IF NOT EXISTS pg_trgm;
- 启动PostgreSQL容器:
- 数据迁移至PostgreSQL
使用Ora2Pg工具将Oracle导出的转换为PostgreSQL兼容的SQL脚本,重点处理Oracle特有数据类型(如CLOB转TEXT、DATE转TIMESTAMP),然后将脚本导入PostgreSQL数据库。 - 启动23.01容器并完成升级
- 拉取镜像:
docker pull dotcms/dotcms:23.01 - 启动容器时挂载21.06的
assets目录,配置PostgreSQL连接,示例命令:docker run -d \ -p 8080:8080 \ -v /path/to/2106/assets:/data/assets \ -e DB_TYPE=POSTGRESQL \ -e DB_HOST=your-postgres-ip \ -e DB_PORT=5432 \ -e DB_NAME=dotcms \ -e DB_USERNAME=dotcms \ -e DB_PASSWORD=your-postgres-pass \ dotcms/dotcms:23.01 - 查看容器日志等待自动升级完成,登录后台验证所有内容、配置、个性化设置是否正常。
- 拉取镜像:
最优最简方案总结
- 跳过本地安装21.06的步骤,直接用Docker镜像挂载本地资源、复用原有Oracle数据库完成过渡升级,减少环境搭建成本。
- 优先依赖DotCMS自带的自动升级脚本处理数据结构变更,避免手动修改数据库表结构,降低出错风险。
- 核心注意点:自定义插件的版本适配(2.5.1→21.06、21.06→23.01需分别调整)、Oracle到PostgreSQL的数据类型转换、资产目录的完整挂载。
内容的提问来源于stack exchange,提问作者Giov Lops
相关产品推荐
相关产品推荐

