Docker:深入解析Nexus技术构建可靠的软件仓库管理系统

news2024/12/23 17:34:28

1、简述

在现代软件开发中,有效的软件仓库管理是确保项目成功的关键一环。Nexus Repository Manager作为一种流行的仓库管理系统,为开发人员提供了强大的工具,用于存储、检索和管理软件构建。本文将深入解析Nexus技术,探讨其关键特性、优势,以及如何正确配置和使用它来提高软件开发流程的效率。

2、特性

Nexus Repository Manager是由Sonatype开发的一款开源的仓库管理系统。它支持多种仓库类型,包括Maven、npm、Docker、NuGet等,使得开发者能够集中管理各种构建工件。Nexus不仅仅是一个二进制仓库管理器,还提供了一系列的功能,包括安全性、版本控制、存储管理等

  • 多仓库支持
    Nexus支持多种仓库类型,例如Maven、npm、Docker等,使得开发者能够统一管理不同技术栈的构建工件。这种多仓库支持为团队提供了更大的灵活性,使其能够在同一个平台上管理各种依赖关系。

  • 安全性
    Nexus通过集成Sonatype的一系列安全工具,可以进行漏洞扫描,帮助团队及时发现并解决潜在的安全问题。这对于保障软件构建的可靠性和安全性至关重要。

  • 版本控制
    Nexus支持版本控制,开发者可以方便地追溯和管理软件构建的不同版本。这有助于更好地控制项目的演进过程,确保每个构建都是可重现的。

  • 智能代理
    Nexus的智能代理功能允许将远程仓库的内容缓存在本地,提高构建的速度。这对于团队分布在不同地理位置的情况下尤为重要,可以有效减少远程仓库的访问延迟。

  • 用户权限管理
    通过Nexus的用户权限管理系统,团队可以精确控制用户对仓库的访问权限。这有助于确保只有授权人员能够访问和操作关键的构建工件,提高了系统的安全性。

3、挂载

Nexus的安装对内存是有要求的,至少要2G内存才可以。首先我们可以创建Nexus映射到外面的仓库地址:

mkdir -p /data/nexus/nexus-data 
chown -R 200 /data/nexus/nexus-data

4、安装

Nexus的安装相对简单,可以通过官方提供的安装包或Docker镜像进行安装。在安装完成后,需要进行一些基本的配置,包括仓库类型、代理设置、用户权限等。

拉取Nexus最新镜像:

docker pull sonatype/nexus3

启动Nexus镜像:

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

安装有点久,可以通过docker logs查看日志是否安装完成:

[root@localhost data]# docker logs -f nexus3 
-------------------------------------------------

Started Sonatype Nexus OSS 3.37.3-02

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

密码修改,密码路径存在/nexus-data/admin.password:

[root@localhost data]# docker exec nexus3 cat /nexus-data/admin.password
2e29e91a-e3d8-4c3d-9fbb-78184b648508

通过访问http://192.168.254.133:8081/当前密码登录,并修改自己的密码:
在这里插入图片描述

5、Maven 仓库

Nexus Repository Manager 使用三种主要的仓库类型来支持不同的用例和需求,它们分别是 Proxy 仓库、Hosted 仓库和 Group 仓库。

  • Proxy 仓库: Proxy 仓库主要用于代理远程仓库的内容,以提高构建时的性能和可靠性。
  • Hosted 仓库:Hosted 仓库用于存储和管理本地创建的构建工件,这包括项目的内部构建、第三方库等。
  • Group 仓库:Group 仓库用于将多个仓库组合成一个逻辑单元,以方便开发者从一个位置访问多个仓库的内容。

6、创建Hosted

当开发者构建项目时,生成的构建工件会被部署到 Hosted 仓库。这样,其他开发者或构建流程就可以从该仓库获取这些构建工件,而不必依赖外部的仓库。

6.1 releases&snapshots

创建一个Maven仓库,通过Repository>Repositories>Create repository>maven2(hosted)创建maven项目,注意Deployment policy一定要设置成allow redeploy、version pollcy根据项目打包是否存在SNAPSHOT或RELEASE字符来设定。

我们创建单独的存储库“快照”和“版本:my-releases和my-snapshots
在这里插入图片描述

6.2 maven配置

在本地maven库中settings.xml中添加授权账号,并且要注意的Id要跟我们上一步创建的快照和版本一致:

<server>
    <id>my-releases</id>
    <username>admin</username>
    <password>123456</password>
</server>
<server>
    <id>my-snapshots</id>
    <username>admin</username>
    <password>123456</password>
</server>

在mirrors中添加maven仓库拉取的路径:

<mirror>
    <id>maven-public</id>
    <mirrorOf>*</mirrorOf>
    <name>Human Readable Name for this Mirror.</name>
    <url>http://192.168.254.133:8081/repository/maven-public/</url>
</mirror>
6.3 上传Jar

通过在项目中pom.xml中配置仓库路径来实现我们编译的jar可以通过maven的deploy指令上传到我们创建的maven仓库中:

<distributionManagement>
    <repository>
        <id>my-releases</id>
        <name>releases</name>
        <url>http://192.168.254.133:8081/repository/my-releases/</url>
    </repository>
    <snapshotRepository>
        <id>my-snapshots</id>
        <name>snapshots</name>
        <url>http://192.168.254.133:8081/repository/my-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

在这里插入图片描述

6.4 Nexus添加Jar

我们也可以本地打好JAR包,通过Nexus 上传模块直接来上传,因为我们上传的是my-releases版本,添加Version版本号要加后缀-release:
在这里插入图片描述在这里插入图片描述

7、创建Group

Group 仓库可以包含多个 Proxy 仓库和 Hosted 仓库。当开发者从 Group 仓库请求依赖项时,Nexus 会在包含的仓库中查找,按照仓库的顺序返回找到的第一个匹配项。这允许组合多个仓库的内容,使其对开发者透明。
在这里插入图片描述

8、创建Proxy

当开发者请求一个依赖项时,Proxy 仓库会首先查看本地是否有缓存的副本。如果没有,它会从远程仓库拉取该依赖项,并在本地缓存一份。这样,在后续的请求中,就可以直接从本地缓存获取而无需再次访问远程仓库。
比如以创建阿里maven代理仓库为例:

https://maven.aliyun.com/nexus/content/groups/public

在这里插入图片描述

9、结论

Nexus Repository Manager作为一款强大的仓库管理系统,在软件开发过程中扮演着关键的角色。通过深入了解其特性和正确的配置方法,团队可以更好地利用Nexus来提高软件构建的效率和可靠性。在今天复杂的软件开发环境中,使用Nexus是确保项目成功的一项重要策略。

通过合理的配置和使用,Nexus将成为团队软件构建过程中的得力助手,确保构建的可靠性、安全性和高效性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1261139.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

瑞数五代ast反混淆笔记二

第一部分 瑞数五代ast反混淆笔记一 第二部分 瑞数五代ast反混淆笔记二 文章目录 前言一、分析思路二、轨迹合并思路三、避免重复调用一个轨迹四、自己调用自己所在的函数五、语句中包含if的处理六、语句中包含try的处理七、节点中包含影响自身值的操作总结 前言 当if转为switc…

机器视觉 AI 数据集制作

工业中&#xff0c;机器视觉物体分拣时&#xff0c;需要制作&#xff0c;数据集&#xff0c;那么&#xff0c;一般情况下&#xff0c;可以选择几个物体的几张图片&#xff0c;或者视频&#xff0c;将待识别的物体的掩模扣取出来&#xff0c;随机的贴在 传送带背景中&#xff0c…

多线程04 死锁,线程可见性

前言 前面我们讲到了简单的线程安全问题以及简单的解决策略 其根本原因是cpu底层对线程的抢占式调度策略,随机调度 其他还有一些场景的问题如下 1.多个线程同时修改一个变量问题 2.执行的操作指令本身不是原子的 比如自增操作就分为三步,加载,自增,保存 3.内存可见性问题 4.指令…

【vue】浏览器安装vue插件不生效

上一篇&#xff1a;浏览器安装vue插件 https://blog.csdn.net/m0_67930426/article/details/134598104 目录 问题情景 解决办法 问题情景 输入框无内容 解决办法 添加 Vue.config.devtools true; 并且控制台不显示的vue又出现

13.端点、簇、属性

源码地址&#xff1a;13.端点、簇、属性 端点&#xff08;endPoint&#xff09; 一个端点就是一个应用 一个字节编号&#xff0c;数据收和发送的基本单元&#xff0c;在模块通信的时候&#xff0c;发送模块必须指定收发双方模块的网络地址和端点。端点要使用必须要和模块里的…

「Linux」git的安装与使用

&#x1f4bb;文章目录 &#x1f4c4;前言安装git的使用配置git初始化 git 仓库提交文件推送到远端使用HTPPS方式&#xff1a;SSH方式 &#x1f4d3;总结 &#x1f4c4;前言 git是一款多平台的版本管理器&#xff0c;用于对代码进行版本控制&#xff0c;如果你还不知如何安装gi…

Git指定分支或文件回退到指定版本

文章目录 一、分支回滚1.1、使用 git reset 命令1.2、使用 git revert 命令1.3、使用 git checkout 命令 二、文件回滚2.1、回滚未提交文件2.2、回滚已提交文件2.2.1、首先查看文件的历史版本2.2.2、找到你想要还原的版本2.2.3、将文件还原到你想要还原的版本2.2.4、提交代码 三…

【数据结构初阶(5)】链式队列的基本操作实现

文章目录 队列的定义初始化队列队尾入队列队头出队列取队头元素取队尾元素获取队列有效元素个数判断队空销毁队列 因为队列比较简单&#xff0c;关于队列的概念就不过多赘述了&#xff0c;本文只讲链队的基本操作实现 队列的定义 定义队列结点结构 链队中的每个结点都应该包…

RK3568平台开发系列讲解(Linux系统篇)pinctrl api介绍及实验

&#x1f680;返回专栏总目录 文章目录 一、pinctrl函数介绍二、设备树案例三、驱动案例 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; &#x1f4e2;本篇将介绍pinctrl api及其使用案例 。 一、pinctrl函数介绍 ①获取设备对应的 pinctrl…

在Matlab里安装gurobipy怎么安装教程

在Matlab 里安装gurobipy 先在CMD里激活&#xff0c; 然后添加系统环境变量 GRB_LICENSE_FILEC:\gurobi10.2\gurobi.lic 然后输入 addpath(D:\gurobi1003\win64\matlab) addpath(C:\gurobi1003\win64\matlab) addpath(C:\gurobi1002\win64\matlab) C:\gurobi1003\win64\m…

多功能智慧路灯系统整体解决方案介绍

在不改变现有城市景观的前提下&#xff0c;利用现有路灯改造&#xff0c;或新建多功能叁仟智慧路灯的方法&#xff0c;可实现城市无线网络、视频监控、物联传感网络、新能源充电系统、网格信息化管理的全覆盖&#xff0c;有效解决信息化设备选址难、取电难等问题。在目前无线通…

可以免费使用的Axure在线版来了

Axure作为一种功能强大的原型设计工具&#xff0c;一直受到设计师的青睐。然而&#xff0c;其高昂的价格可能成为一个门槛&#xff0c;限制了一些设计师的选择。但不用担心&#xff0c;现在有一个免费的Axure在线工具即时设计&#xff0c;功能更完整&#xff0c;更划算&#xf…

智能优化算法应用:基于飞蛾扑火算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于飞蛾扑火算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于飞蛾扑火算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.飞蛾扑火算法4.实验参数设定5.算法结果6.参考…

小程序如何进行版本回退

当商家决定回退小程序版本时&#xff0c;可能是因为新版本出现了一些问题或者不符合预期&#xff0c;需要恢复到之前的稳定版本。下面具体介绍怎么回退小程序的版本。 在小程序管理员后台->版本设置处&#xff0c;点击版本回退。确认后&#xff0c;小程序会回退到上一次的版…

基于springboot-“有光”摄影分享网站系统(2023年☆全网唯一)【附源码|数据库|表结构|万字文档(LW)|技术文档|说明文档】

主要功能 前台登录&#xff1a; 注册用户&#xff1a;用户账号、密码、姓名、手机号、身份证号、性别、邮箱 用户&#xff1a; ①首页、公告资讯展示、图片素材展示、活动展示、视频素材展示、查看更多 ②论坛、发布帖子、活动、活动标题、活动类型、公告资讯、公告标题、公告…

Day43力扣打卡

打卡记录 子数组的最小值之和&#xff08;乘法原理 单调栈&#xff09; 大佬的题解 class Solution:def sumSubarrayMins(self, arr: List[int]) -> int:n len(arr)# 左边界 left[i] 为左侧严格小于 arr[i] 的最近元素位置&#xff08;不存在时为 -1&#xff09;left, s…

消失的数字,旋转数组(leetcode 一题多解)

目录 一、消失的数字 思路一&#xff08;暴力求解&#xff09;代码实现&#xff1a; 思路二&#xff08;数列的思想&#xff09;代码实现&#xff1a; 思路三&#xff08;异或的运用&#xff09;代码实现&#xff1a; 二、轮转数组 思路一&#xff08;暴力求解&#xff09…

viple模拟器使用(三):unity模拟器中实现沿右墙迷宫算法

沿右墙迷宫算法 引导 线控模拟可以使得通过用户手动操作&#xff0c;实现机器人在模拟环境下在迷宫中行走&#xff08;即&#xff1a;运动&#xff09;&#xff0c;算法可以使得机器人按照一定的策略自动行走&#xff0c;沿右墙迷宫算法就是其中的一种策略。 目的 运行程序后&…

C++学习之路(七)C++ 实现简单的Qt界面(消息弹框、按钮点击事件监听)- 示例代码拆分讲解

这个示例创建了一个主窗口&#xff0c;其中包含两个按钮。第一个按钮点击时会显示一个简单的消息框&#xff0c;第二个按钮点击时会执行一个特定的操作&#xff08;在这个例子中&#xff0c;仅打印一条调试信息&#xff09;。 功能描述&#xff1a; 创建窗口和布局&#xff1a;…

RT-DETR改进 | 2023小目标改进 | InnerEIoU、InnerSIoU、InnerWIoU、InnerDIoU等二十余种损失函数

论文地址&#xff1a;官方Inner-IoU论文地址点击即可跳转 官方代码地址&#xff1a;官方代码地址-官方只放出了两种结合方式CIoU、SIoU 本位改进地址&#xff1a; 文末提供完整代码块-包括InnerEIoU、InnerCIoU、InnerDIoU等七种结合方式和其AlphaIoU变种结合起来可以达到二十…