docker、docker-compose 下安装maven私服库nexus3并且配置使用
1、下载镜像
docker pull sonatype/nexus3:3.34.1
2、docker run指令
nexus的一些配置信息,索引信息、数据信息等,都是在容器的一个文件夹里,需要挂载出来,我们先创建一个宿主机的挂载目录,并给到权限,容器内的nexus3
启动的时候,读取是nexus
的权限,如果权限不对的话,导致读取不到文件数据,启动会报错;并且,data
目录,也不会有文件内容挂载出来;如图所示:
执行一下指令,创建目录
mkdir -p /opt/nexus/data && chown -R 200 /opt/nexus/data
执行 docker run执行
docker run -d -p 8081:8081 --name nexus -v /opt/nexus/data:/nexus-data sonatype/nexus3:3.34.1
3、docker-compose脚本
version: '3'
services:
nexus3:
image: sonatype/nexus3:3.34.1
container_name: nexus3
restart: always
ports:
- 8081:8081
volumes:
- ./data:/nexus-data
挂在卷这里,./data
表示当前docker-compose.yml
文件所在的目录下的 data目录, 也就是当前目录下的data目录
4、启动
docker-compose up -d
5、卸载
docker-compose down
6、nexus3 第一次启动配置
6.1、登录
默认帐号:admin
默认密码:在挂载出来的文件里的admin.password
有 目录为/opt/nexus/data/admin.password
第一次登录,需要修改密码,设置一些选项,修改密码、是否开启匿名认证、完成;具体如图所示:
6.2、maven的默认库介绍
maven-central
:中央库
maven-releases
:私服里的正式包
maven-snapshots
:私服里的快照包
maven-public
:公共的分组
其中maven-public
是几个库的合集,如图所示:
6.3、新建一个代理阿里云的Repositories库
类型选择maven2(proxy)
选择maven-public
公共分组,把新加的阿里云的代理的私服库加入组里,也可以调整顺序,拉私服库的jar包时候,是从上到下的;
6.4、本地连接上私服
我们首先看下,因为是刚刚搭建的私服库,里面是没有任何jar包的
本地要连上私服库,可以配置两个地方
6.4.1、maven的settings.xml
配置,新增私服镜像地址
首先找到私服库的地址,如图:
然后settings.xml
新增配置
<servers>
标签下新增
<server>
<id>nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
<mirrors>
标签下新增
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>nexus.</name>
<url>http://192.168.68.129:8081/repository/maven-public/</url>
</mirror>
<profiles>
标签下新增
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus</id>
<url>http://192.168.68.129:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<url>http://192.168.68.129:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
注意,标签下的<id>nexus</id>
要一致。
6.4.2、在pom.xml
文件里新增配置
<repositories>
<repository>
<id>nexus</id>
<name>maven-nexus</name>
<url>http://192.168.68.129:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<id>nexus</id>
要跟settings.xml
一致
如果两个都配置,pom.xml
的优先级要大于settings.xml
。
7、jar包上传私服库
7.1、 settings.xml
配置
<servers>
标签下,新增两个服务,分别对应 releases
和snapshots
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
7.2、pom.xml
配置
<distributionManagement>
<repository>
<id>releases</id>
<name>Releases</name>
<url>http://192.168.68.129:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshot</name>
<url>http://192.168.68.129:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<id>nexus</id>
要跟settings.xml
一致
7.3、在当前的pom.xml
文件下,执行mvn deploy
详细参看《docker-hub 文档》