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

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.mzph.cn/news/177582.shtml

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

相关文章

提示词入门

文章目录 提示词入门Prompt Engneering1.更加**明确**且**具体**的指令2. 编写提示词的方法3. 按需设计和迭代思维 提示词入门Prompt Engneering 1.更加明确且具体的指令 eg: 模糊&#xff1a;介绍一下重庆明确且具体&#xff1a;介绍一下重庆适合情侣周末游玩的景点及当地…

力扣:347.前 K 个高频元素

题目&#xff1a; 给定一个非空的整数数组&#xff0c;返回其中出现频率前 k 高的元素。 示例 1: 输入: nums [1,1,1,2,2,3], k 2输出: [1,2] 示例 2: 输入: nums [1], k 1输出: [1] 提示&#xff1a; 你可以假设给定的 k 总是合理的&#xff0c;且 1 ≤ k ≤ 数组中…

HTTPS攻击原理 被攻击该如何防护

简单来说&#xff0c;HTTPS HTTP SSL/TLS。 在 HTTP 协议中&#xff0c;客户端通过网络传输消息与服务器进行通信。但该消息采用明文的原始格式。坏人&#xff08;攻击者&#xff09;很容易窃听消息。这就是我们需要 SSL/TLS 的原因。 HTTPS是一种安全的HTTP协议&#xff0c…

天外飞仙,菠萝蜜多斩,灵犀双响炮。。。linux通信之UDP通信

任务: 利用UDP实现基本通信 思路: 1.服务器实现:socket bind recvfrom sendto 2.客户端实现:socket sendto recvfrom //服务器 #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <netinet/in.h>…

OMP: Error #15: Initializing libiomp5md.dll

问题描述 在conda虚拟环境运行程序时&#xff0c;出现以下的错误&#xff1a; 问题原因 anaconda的环境下存在两个libiomp5md.dll文件。 解决方法 一、在代码上加上限制&#xff08;每次都得加&#xff09; import os os.environ[KMP_DUPLICATE_LIB_OK]True 这种方法解决不…

【蓝桥杯选拔赛真题26】C++字符串逆序 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析

目录 C/C++字符串逆序 一、题目要求 1、编程实现 2、输入输出 二、算法分析

FreeRTOS-信号量

信号量 信号&#xff1a;起通知作用。 量&#xff1a;表示资源的数量。 当量没有限制时&#xff0c;就是计数型信号量。 当量只有0、1时&#xff0c;就是二进制信号量。 支持的动作&#xff1a;give给出资源&#xff0c;计数值1&#xff1b;take获得资源&#xff0c;计数值-1。…

Charles下载安装及配置之Mac

因工作需要用到抓包工具&#xff0c;但Fiddler不能在mac上使用&#xff0c;所以找到了Charles&#xff0c;Charles其实是一款代理服务器&#xff0c;通过过将自己设置成系统&#xff08;电脑或者浏览器&#xff09;的网络访问代理服务器&#xff0c;然后截取请求和请求结果达到…

sql注入靶场

第一关&#xff1a; 输入&#xff1a;http://127.0.0.1/sqli-labs-master/Less-1/?id1 http://127.0.0.1/sqli-labs-master/Less-1/?id1%27 http://127.0.0.1/sqli-labs-master/Less-1/?id1%27-- 使用--来闭合单引号&#xff0c;证明此处存在字符型的SQL注入。 使用order …

Unity之NetCode多人网络游戏联机对战教程(10)--玩家动画同步

文章目录 前言NetworkAnimation服务端权威客户端权威 前言 这次的动画同步与位置同步&#xff0c;可以说实现思路是一样的&#xff0c;代码相似度也非常高 NetworkAnimation 如果直接挂载这个脚本只有Host&#xff08;服务端&#xff09;才可以同步&#xff0c;Client是没有…

通过火狐Firefox浏览器在设备间留言、传递备注消息

如果多台设备间没有都安装微信、飞书这种可以通过文件传输助手备注消息的APP&#xff0c;那么可通过火狐浏览器在设备间留言。 原理&#xff1a;火狐支持把当前设备的一个浏览器标签页发送到其他设备 那么我们只需要把要留言的文本记录到一个网页&#xff0c;然后发送到其他设…

grpc 集成 opentelemetry

服务端代码&#xff1a; package mainimport ("context""flag""fmt""go.opentelemetry.io/otel""go.opentelemetry.io/otel/attribute""go.opentelemetry.io/otel/exporters/jaeger""go.opentelemetry.io/o…

快速开发出一个公司网站

问题描述&#xff1a;参加一个创业活动&#xff0c;小组要求做一个公司网站&#xff0c;简单介绍一下自己公司的业务。需要快速完成。 问题解决&#xff1a;从网上找一个网站模板&#xff0c;类似于做PPT&#xff0c;搭建一个网站即可。 这里推荐的是京美建站、wordpress、he…

springboot云HIS医院信息综合管理平台源码

满足基层医院机构各类业务需要的健康云HIS系统。该系统能帮助基层医院机构完成日常各类业务&#xff0c;提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生站和护士站等一系列常规功能&#xff0c;能与公卫、PACS等各类外部系统融合&#xff0c;实现多…

132.四叶玫瑰数-列举、查找、判断等题型【满分解题代码+详细分析】(四叶玫瑰数类型题-C/C++JavaPython实现)

文章目录 132.四叶玫瑰数-列举、查找、判断等题型【满分解题代码+详细分析】(四叶玫瑰数类型题-C/C++&Java&Python实现)一.题目题目类型1:列举题目类型2:判断1.1 解题思路1.1.1 题目类型1:列举1.1.2 题目类型2:判断二.解题代码2.1 题目类型1:列举 C/C++解题代码…

现代控制理论 -- 能控性、能观性

能控性定义&#xff1a; 若给定系统的一个初始状态x(t0)&#xff08;t0可为0&#xff09;&#xff0c;若在t1>t0的有限时间区间[t0,t1]内&#xff0c;存在容许控制u(t)使得x(t1)0&#xff0c;则称系统状态在t0时刻是能控的。 若系统对任意一个初始状态都能控&#xff0c;则…

常见加密算法

常见加密算法 加密算法是一种用数学方法对数据进行变换的技术&#xff0c;目的是保护数据的安全&#xff0c;防止被未经授权的人读取或修改。加密算法可以分为三大类&#xff1a;对称加密算法、非对称加密算法和哈希算法&#xff08;也叫摘要算法&#xff09;。 哈希算法 哈…

来自2023 TM Forum 数字领导力中国峰会的邀请函

峰会介绍 2023数字领导力中国峰会由tmforum和亚信科技联合主办。 数据驱动创新&#xff0c;数字塑造未来&#xff01;2023数字领导力中国峰会&#xff0c;立足技术和商业视角&#xff0c;聚焦讨论各行业如何依托数据治理、IT和网络转型&#xff0c;实现跨越式增长。 这里&am…

十八数藏的文化数字革新:传统之美的数字转变

在数字时代的冲击下&#xff0c;十八数藏以其独特的文化数字革新&#xff0c;将传统之美注入数字的脉络中&#xff0c;实现了非遗之珍的数字转变。这种数字化的创新不仅为传统工艺赋予了新的生命&#xff0c;也使得传承变得更为生动与全面。 十八数藏通过数字技术&#xff0c;将…

【挑战业余一周拿证】一、亚马逊云科技简介 - 第 2 节 - 模块 简介

CSDN 官方中文视频&#xff08;免费&#xff09;&#xff1a;点击进入 第 2 节 - 模块 1 简介 这门课程将为您提供需要了解的所有重要信息&#xff0c;让您能够轻松讨论亚马逊云科技并了解它为 何对您的企业有利 亚马逊云科技为每个企业都提供了非常广泛的服务&#xff0c;从…