Docker搭建nexus,并实现上传下拉依赖
目录:
环境
Centos7.4
安装docker
使用docker安装nexus
借鉴博客
博客:博客
安装
-
查找镜像
docker search nexus
-
选取使用次数较多是镜像 拉取镜像
docker pull sonatype/nexus3
-
查看拉取的镜像
docker images
-
创建volume(如果直接用 -v /opt/nexus-data:/nexus-data,可能会存在权限问题)
docker volume create nexus-data
-
查看创建结果
docker volume inspect nexus-data
-
启动nexus
docker run -d --name nexus3 \ --restart=always \ -p 8081:8081 \ -v nexus-data:/nexus-data \ sonatype/nexus3
-d 是后台启动
–name 是启动容器名
–restart=always 意思docker被重启,对应该容器也会被重启
-p 宿主机端口映射(:前面是宿主机端口, :后面是容器端口)
-v 将容器某个目录挂载到宿主机上面 nexus-data是上面配置好的宿主机挂载点,/nexus-data是容器对应路径
sonatype/nexus3 是启动的镜像 -
开放端口
- 开放安全组(对应阿里云,腾讯云后台,添加安全组)
- 开放防火墙端口
- 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
- 开启端口
systemctl restart firewalld
systemctl enable firewalld
firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports
- 关闭防火墙
访问web
- 访问路径: ip:8081,网上说默认的账号是admin,密码是admin123,实际新版本会随机一个admin密码
- 获取正确密码
上面路径我们已经通过docker volume做了映射了,可以通过docker volume inspect nexus-data 查看真实机器路径
cd /var/lib/docker/volumes/nexus-data/_data
cat admin.password
复制登陆
禁用 anonymous用户访问
这里简单介绍下几种repository的类型:
- hosted,本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第二方库。
- proxy,代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
- group,仓库组,用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可
介绍我们用使用的仓库
maven-central 配置中央仓库,可以直向maven官方属于代理类的仓库
maven-releases 私人仓库,用户的正式版本的jar存放仓库
maven-snapshots 私人仓库, 用户的快照版本jar存放仓库
maven-public = maven-releases + maven-snapshots + maven-central
这里可以单击 上面maven-public ,查看内部配置
注意: 我也就是我们搭建私库使用主要就是maven-public库
通过idea上传jar到nexus库里面
setting文件添加server
注意username是在ip:8081登陆账号,password是在ip:8081登陆的密码
<servers>
<!--maven-public仓库对应账号密码设置-->
<server>
<id>nexus-public</id>
<username>admin</username>
<password>123456789</password>
</server>
<!--maven-releases仓库对应账号密码设置-->
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>123456789</password>
</server>
<!--maven-snapshot仓库对应账号密码设置-->
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>123456789</password>
</server>
</servers>
</servers>
项目pom文件添加配置
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Nexus Release Repository</name>
<url>http://ip:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://ip:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
注意: 上面 id 要和 setting里面配置 server下的id一样,要不然就没法调用对应账号密码
注意: 上面 id 要和 setting里面配置 server下的id一样,要不然就没法调用对应账号密码
注意: 上面 id 要和 setting里面配置 server下的id一样,要不然就没法调用对应账号密码
url路径可以通过web页面复制过来
测试上传
idea可以直接点击 deploy
或者命令行
mvn deploy
如果你发布是releases的jar,可能会报错
解决方案:
选择 Allow redeploy,记得保存
查询是否发布到私服上面去了
从私库上面拉取jar包
配置方案
- 配置repository
- pom文件配置repository
- setting文件配置repository
- setting文件配置mirror
这里要说下maven拉取jar顺序
1、本地仓库
2、maven settings profile中的repository;
3、pom.xml中profile中定义的repository;
4、pom.xml中的repositorys(定义多个repository,按定义顺序找);
5、mirror
通过配置项目repositorys实现拉取
-
新建一个maven项目
-
项目里面pom文件添加
<dependencies> <dependency> <groupId>com.demo</groupId> <artifactId>my-maven-demo</artifactId> <version>1.0</version> </dependency> </dependencies> <repositories> <repository> <id>nexus-public</id> <url>http://ip:8081/repository/maven-public/</url> </repository> </repositories>
拉取前删除本地库对应demo,jar包
点击刷新maven项目
从私库里面拉取成功
通过pom.xml中profile中定义的repository拉取
- pom文件添加
<dependencies>
<dependency>
<groupId>com.demo</groupId>
<artifactId>my-maven-demo</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>dev</id>
<repositories>
<repository>
<id>nexus-public</id>
<url>http://ip:8081/repository/maven-public/</url>
</repository>
</repositories>
</profile>
</profiles>
- 测试前清空本地仓库
- 刷新项目
或者命令行运行 mvn clean install -P dev 刷新项目 - 拉取成功
从maven settings profile中的repository拉取jar
-
清空项目pom文件
-
修改maven setting文件,在setting文件添加profile配置
<profiles>
<profile>
<id>jdk-1.4</id>
<repositories>
<repository>
<!--这里名字必须和上面maven-public server id一样 -->
<id>nexus-public</id>
<name>Repository for JDK 1.4 builds</name>
<url>http://ip:8081/repository/maven-public/</url>
<layout>default</layout>
<snapshotPolicy>always</snapshotPolicy>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>jdk-1.4</activeProfile>
</activeProfiles>
- 清空本地仓库
- idea刷新项目
- 本地仓库结果
通过配置mirror拉取jar包
- 清空setting里面 profiles设置
- 添加mirror
<mirror>
<!--这里必须和server id 一样-->
<id>nexus-public</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://ip:8081/repository/maven-public/</url>
</mirror>
- 清空本地仓库
- 刷新项目
- 拉取结果