基于nexus3搭建仓库(maven,docker hub)

1. 环境要求

本次实验在centOS 7 服务器上通过使用nexus3搭建私有仓库,包括maven仓库和docker hub

环境说明

  1. centOS 7
  2. docker ce

2. 启动nexus3容器

  1. 安装docker环境
  2. 创建数据卷用于数据持久
docker volume create --name nexus-data
  1. 启动容器
docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3
  1. 访问http://ip:8081,默认管理员用户名/密码:admin/admin123
  2. nexus启动较慢,可通过docker logs -f nexus查看日志,待出现如下日志即表示启动。
-------------------------------------------------

Started Sonatype Nexus OSS 3.14.0-04

-------------------------------------------------

3.搭建maven仓库

3.1 相关仓库说明

nexus会默认创建以下4个maven仓库:

  1. maven-central:代理仓库,代理下载和存储包,如果私服仓库内没有用户需下载的包,则会根据代理配置,去外网仓库下载相应包并保存至私服。
  2. maven-releases:提供的默认存放release版本jar包的仓库。
  3. maven-snapshots:提供的默认存放snapshot版本jar包的仓库。
  4. maven-public:这是一个仓库组,访问这个仓库组的地址其实会访问组内所有仓库,用于提供下载包服务。

仓库逻辑如下
在这里插入图片描述

3.2 配置仓库

3.2.1 增加aliyun代理仓库
  1. 登录管理员账户后,点击上方“设置”按钮,继续点击左侧“Repositories”按钮,点击“Create repository”,类型选择“proxy”。
  2. 设置仓库名,代理url,点击保存。
3.2.2 将新建仓库添加至public仓库
  1. 点击“maven-public”。
  2. 移动新增的仓库至组,并提升其使用位置(maven-central代理地址为https://repo1.maven.org/maven2/,国内访问较慢)。
3.2.3 创建开发人员权限角色
  1. 点击左侧“Roles”,再点击“Create role”。
  2. 根据实际情况配置角色
3.2.4 创建用户
  1. 点击左侧“Users”,再点击“Create local user”。
  2. 根据实际情况填写信息。

3.4 使用

3.4.1 上传
  1. 找到本地mvn配置文件,“settings.xml”,在<servers></servers>标签内增加用户信息,保存。
  2. 在maven项目pom文件中配置maven仓库地址,注意nexus需要与上一步server中配置的id需要一致。
<distributionManagement>  
	<repository> 
		<id>nexus</id>  
	    <name>Release Deploy</name>  
		   <url>http://122.224.204.77:8081/repository/maven-releases/</url>  
	 </repository> 
	 <snapshotRepository> 
		 <id>nexus</id>  
		 <name>Snapshot Deploy</name>  
		 <url>http://122.224.204.77:8081/repository/maven-snapshots/</url>  
	 </snapshotRepository>
</distributionManagement>
  1. 执行mvn clean deploy进行上传测试。
#pom标签版本如下表示打包为快照版本
<version>0.0.2-SNAPSHOT</version>
#pom标签版本如下表示打包为release版本
<version>1.5</version>
3.4.2下载
  1. 在maven项目pom文件中配置maven仓库地址,添加包依赖即可。
<repositories>  
	 <repository> 
		 <id>nexus-public</id>  
		 <name>Nexus Public</name>  
		 <url>http://122.224.204.77:8081/repository/maven-public/</url>  
		 <releases> 
			 <enabled>true</enabled>  
		 </releases> 
		 <snapshots> 
			 <enabled>true</enabled>  
		 </snapshots> 
	</repository>
</repositories>
3.4.3 上传本地第三方jar包

对于第三方jar包,需要先生成相应的pom描述文件,将jar包安装到本地maven仓库后再推送至远程仓库。

  1. 本地安装
mvn install:install-file -Dfile=file.jar -DgroupId=com.example -DartifactId=test -Dversion=1.0 -Dpackaging=jar

Dfile: 文件路径
DgroupId:设置的groupID
DartifactId:设置的artifactId
Dversion: 设置的版本
Dpackaging:打包类型

  1. 推送至远程仓库
mvn deploy:deploy-file -DgroupId=com.example -DartifactId=test -Dversion=1.0 -Dpackaging=jar -Dfile=file.jar -Durl=http://172.22.25.234:8081/repository/3rd_part/ -DrepositoryId=nexus

Durl: 远程仓库地址
DrepositoryId:maven配置中的server用户ID,用于认证。

4. 创建docker hub仓库

4.1 启动容器

重新启动nexus3容器,8082端口用于代理docker hub

docker run -d -p 8081:8081 -p 8082:8082 --name nexus -v nexus-data:/nexus-data sonatype/nexus3

4.2 新建仓库

点击设置界面,选择Repositories,点击Create repository,如下图所示:

在这里插入图片描述

选择仓库类型,这里Docker有三种类型,分别是group、hosted、proxy。这里只演示hosted类型,所以选择docker(hosted),如下图:

在这里插入图片描述

注:Docker镜像仓库类型含义解释如下:

  1. hosted : 本地存储,即同docker官方仓库一样提供本地私服功能
  2. proxy : 提供代理其他仓库的类型,如docker中央仓库
  3. group : 组类型,实质作用是组合多个仓库为一个地址

指定docker仓库的名称、指定一个端口用来通过http的方式进行访问仓库、勾选是否支持docker API V1,然后create repository;

在这里插入图片描述

因为我们测试的时候不是使用加密的HTTPS进行访问,所以这里需要增加一个docker的启动参数,给他指定私库的地址,如下:

编辑/etc/docker/daemon.json 增加如下内容,当然也可通过启动参数增加

{
   "insecure-registries":["http://ip:port"]
}

登录到私有仓库

docker login ip:port

4.2 maven项目推送镜像至仓库

使用docker-maven-plugin插件推送镜像。

    <plugins>
	     <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.1.1</version>
                <configuration>
                    <pushImage>true</pushImage>
                    <serverId>nexus</serverId>
                    <registryUrl>172.22.25.234:8082</registryUrl>
                    <imageName>172.22.25.234:8082/xxxx:1.0.0-SNAPSHOT</imageName>
                    <dockerDirectory>${project.basedir}</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
                <!-- 运行命令 mvn clean package docker:build 打包并生成docker镜像 -->
            </plugin>
    </plugins>

参数解释:
serverId:maven配置文件中的用户信息
registryUrl:仓库地址
imageName:镜像标签名

5. 参考链接

  1. docker nexus3
  2. nexus3 使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值