在 docker 中部署 nexus 作为 maven 私服,需使用 sonatype/nexus3 镜像,挂载 /opt/nexus-data 卷并设 uid 200 权限,映射 8081 端口,首次启动后读取 admin.password 登录,配置 maven-releases、maven-snapshots 和 maven-public 仓库,再通过 pom.xml 与 settings.xml 关联实现构件部署。

在 Docker 中部署 Nexus 作为 Maven 私服,核心是用官方 sonatype/nexus3 镜像快速启动一个稳定、可持久化的仓库服务。关键点在于:正确挂载数据卷避免重启丢配置、开放必要端口(默认 8081)、首次启动后初始化管理员密码、再通过 Web 界面或 REST API 配置 Maven 仓库(如 maven-public、maven-releases、maven-snapshots)。
准备镜像与基础运行
拉取最新稳定版 Nexus 3 官方镜像:
docker pull sonatype/nexus3:3.79.0
创建宿主机目录用于持久化数据和日志(Nexus 要求 UID 200 有写权限):
mkdir -p /opt/nexus-data && chown -R 200:200 /opt/nexus-data
运行容器(映射端口、挂载卷、启用 HTTPS 可选):
docker run -d \<br> --name nexus \<br> -p 8081:8081 \<br> -v /opt/nexus-data:/nexus-data \<br> -e INSTALL4J_ADD_VM_PARAMS="-Xms2g -Xmx2g" \<br> --restart=unless-stopped \<br> sonatype/nexus3:3.79.0
获取初始密码并登录管理界面
容器首次启动后,管理员密码自动生成在数据卷内:
cat /opt/nexus-data/admin.password
浏览器访问 http://localhost:8081,用用户名 admin 和该密码登录。首次登录会强制修改密码,完成后即可进入控制台。
配置 Maven 仓库与用户权限
在 Web 界面中依次操作:
-
创建仓库:
Repository → Repositories → Create repository → maven2 (hosted),分别建maven-releases(Deployment policy 设为 "Disable redeploy")和maven-snapshots(允许 redeploy) -
组合仓库:创建
maven-public类型为group,把 releases、snapshots、central 代理仓库加入其中,作为团队统一仓库地址 -
添加用户/角色:例如新建
deployer用户,分配nexus-deployment-role角色(含nx-repository-view-maven2-maven-releases-*等权限)
本地 Maven 项目对接私服
在项目 pom.xml 中配置发布目标:
<distributionmanagement><br> <repository><br> <id>nexus-releases</id><br> <url>http://localhost:8081/repository/maven-releases/</url><br> </repository><br> <snapshotrepository><br> <id>nexus-snapshots</id><br> <url>http://localhost:8081/repository/maven-snapshots/</url><br> </snapshotrepository><br></distributionmanagement>
在 ~/.m2/settings.xml 中配置认证信息(ID 必须与 pom.xml 中 <id></id> 一致):
<servers><br> <server><br> <id>nexus-releases</id><br> <username>deployer</username><br> <password>xxx</password><br> </server><br></servers>
执行 mvn deploy 即可将构件推送到对应仓库。










