Docker 搭建maven私服
nexus 是 sonatype 下的Maven管理器。
docker-nexus3 是 sonatype 下的docker开源容器库,只需要简单的使用docker命令即可创建nexus.
Docker 镜像 docker-nexus3
官方有两种方式
- 使用 docker 的 data volume (推荐)
- 使用本地目录作为 container 的 volume
使用 data volume
docker volume create --name nexus-data
docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3
使用本地目录
mkdir nexus
cd nexus
docker run -d -p 8081:8081 --name nexus -v $PWD/nexus-data:/nexus-data sonatype/nexus3
检测 nexus 服务器
curl -u admin:admin123 http://localhost:8081/service/metrics/ping
这里admin:admin123
是 nexus 服务器初始默认的用户名和密码
介绍 nexus 中的模块
进入容器后可以看到
-
maven-central 是代理仓库,依赖在私服上不存在时,会直接从maven中央仓库中下载,并缓存到里面
-
maven-public 是仓库组,包括maven- releases,maven- snapshots,maven-central,新创建的仓库时会加入到maven-public的group中,只需要配置maven-public的mirror就可以使用用私服内的所有依赖
-
maven-releases和maven-snapshots分别对应着发布版和快照版
可以创建给开发人员用的用户,分给可以read、browse所有仓库的权限
使用 maven 私服
需要在 .m2目录下追加如下配置文件
test用户是新创建用户,只有读取和浏览的依赖包的全选,需要上传到私服的用户(releases,snapshots)
<servers>
<server>
<id>public</id>
<username>test</username>
<password>123456</password>
</server>
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://127.0.0.1:8081/repository/maven-public/</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>dev</id>
<repositories>
<repository>
<id>Nexus</id>
<url>http://127.0.0.1:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
配置POM
<distributionManagement>
<repository>
<id>releases</id>
<name>Releases</name>
<url>http://127.0.0.1:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshot</name>
<url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>