一、nexus 自 3.70.0 以上版本不再支持传统的OrientDB 数据库,必须使用H2或者PostgreSQL数据库,个人用户建议使用轻量级的H2,所以要从3.XX升级到最新的3.78.2,必须迁移旧的数据库,迁移过程其实很简单,尤其是对于docker部署的nexus来说。
二、迁移过程分为以下几步:
-
备份原来的nexus容器数据
#路径根据自己容器映射地址来 cp -r /mnt/nexus/data /mnt/nexus/data.bak
-
先升级至3.70.0,此版本既支持OrientDB也支持H2数据库,是我们升级至最新版本的过度版本,只有这个版本下才有对应的迁移工具包能够使用,这一步直接拉取docker镜像然后重新根据之前配置启动容器即可。
sudo docker pull sonatype/nexus3:3.70.0 #停止原来的nexus容器并删除,启动新镜像容器,这一步(参数因人而异),下面只做参考 sudo docker stop nexus3 sudo docker rm nexus3 sudo docker run -d --restart=always -p 8081:8081 --name nexus3 -v /data:/nexus-data sonatype/nexus3:3.70.0
-
nexus 3.70.0容器启动后,先导出原来的数据文件,然后下载迁移工具按照官方文档进行备份和迁移。
此过程官方有完整的操作文档 https://help.sonatype.com/en/migrating-to-a-new-database.html#migrating-from-orientdb-to-h2-162010 -
接下来重启nexus 3.70.0这个容器看是否正常,如果一切正常,说明已切换为H2数据库,docker直接升级至最新版即可。
sudo docker pull sonatype/nexus3:3.78.2-java17-alpine #停止原来的nexus容器并删除,启动新镜像容器,这一步(参数因人而异),下面只做参考 sudo docker stop nexus3 sudo docker rm nexus3 sudo docker run -d --restart=always -p 8081:8081 --name nexus3 -v /data:/nexus-data sonatype/nexus3:3.78.2-java17-alpine
-
最新版本可能会出现一个黄色警告,需要添加自定义密钥文件,添加方式官方文档https://help.sonatype.com/en/re-encryption-in-nexus-repository.html,
文档中最后一步re-encrypt按照下面第六步操作即可。## nexus Nexus was not configured with an encryption key and is using the Default key.
在配置文件和环境变量中添加任选其一即可!然后重启容器。
-
最后登录后台通过API重置下密钥,如下图,secretKeyId就是你上面定义的json文件中的id,点击请求警告就消除了。