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将成为团队软件构建过程中的得力助手,确保构建的可靠性、安全性和高效性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GPIO的使用--操作PF09 PF10 PF08实现呼吸灯、跑马灯、警报闪烁灯

先来个呼吸灯演示 呼吸灯 目录 一、GPIO的介绍 1.含义 2.控制原理 3.控制流程 二、LED控制 1.呼吸灯 操作代码 烧录结果 2.蜂鸣器红绿灯交替 操作代码 3.红绿灯交替闪烁 操作代码 一、GPIO的介绍 1.含义 GPIO(general porpose intput output),通用输入输出端口。…

应用密码学期末复习(2)

目录 第二章 2.1数论与密码基础-数论基本概念 2.1.1几个基本概念 2.1.2辗转相除法 2.1.3解一次周余式 2.2密码基础-单表密码 2.2.1单表密码体制 2.2.2单表密码的统计分析 2.3密码基础-多表密码 2.4密码基础-置换密码 第二章 2.1数论与密码基础-数论基本概念 2.1.1几…

window关于下载anaconda 2023年以后的版本,jupyter notebook闪退,没有内核的问题

这种问题的解决办法&#xff1a; 下载anaconda较早版本&#xff0c;比如我下载的是&#xff1a;2022年5月的版本。 下载之后&#xff0c;打开jupyter好像也会没有内核和闪退。 下面解决步骤&#xff1a; 1.注意&#xff1a;打开anaconda powershell prompt 2.重点来了&#xf…

IDEA 2022.1 同一个 spring boot main类运行多个实例

普通的 Java 项目 运行多个实例是非常简单的&#xff0c;直接点击 run 多次即可&#xff0c;但在 spring boot 中默认情况下&#xff0c;是不允许把同一个 web 项目改完端口后多次运行的&#xff0c;如下会显示让你先停止当前实例后再启动&#xff1a; 开启运行多个实例的的方法…

Redis面试题:哨兵模式相关问题,以及脑裂问题

目录 面试官&#xff1a;怎么保证Redis的高并发高可用 面试官&#xff1a;你们使用redis是单点还是集群&#xff0c;哪种集群 面试官&#xff1a;redis集群脑裂&#xff0c;该怎么解决呢&#xff1f; 面试官&#xff1a;怎么保证Redis的高并发高可用 候选人&#xff1a;首先…

WordPress:构建强大的网站和博客的完美选择

WordPress&#xff1a;构建强大的网站和博客的完美选择 一、WordPress 简介1.1 WordPress 介绍1.2 WordPress 优势 二、部署LNMP环境2.1 前提条件2.2 关闭防火墙和SELinux2.3 安装Nginx2.4 安装MySQL2.5 安装PHP2.6 配置Nginx2.7 配置MySQL2.8 配置PHP2.9 测试访问LNMP平台 三、…

【九章斩题录】Leetcode:面试题 01.03. URL化(C/C++)

精品题解 &#x1f525; 《九章斩题录》 &#x1f448; 猛戳订阅 面试题 01.03. URL化 &#x1f4da; 题目&#xff1a;URL化。编写一种方法&#xff0c;将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符&#xff0c;并且知道字符串的“真实”长度。…

【每日一题】子数组的最小值之和

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;贡献法单调栈 写在最后 Tag 【贡献法】【单调栈】【数组】【2023-11-27】 题目来源 907. 子数组的最小值之和 题目解读 计算整数数组的连续子数组中最小值的和。 解题思路 本题朴素的解决思想是求出所有的连续子数组…

微软重磅更新:Bing Chat全线改名Copilot,用户可免费使用GPT4!(文末附Copilot使用教程)

原创 | 文 BFT机器人 微软在2023年的Ignite大会上宣布了许多新产品和功能。其中最引人注目的是Bing Chat更名为Copilot&#xff0c;Copilot基于最新的OpenAI模型&#xff0c;包括GPT-4和DALL・E 3&#xff0c;为用户提供文本和图像生成功能。也就是说&#xff0c;只要你拥有微…

TDA4开发环境Docker化

文章目录 背景1. TDA4X Linux SDK编译环境镜像构建1.1 安装SDK1.2 验证制卡1.2.1 出现的问题:1.3 验证编译1.3.1 出现的问题2. TDA4X Linux-RT SDK编译环境镜像构建2.1 安装SDK2.2 出现的问题参考背景 开始阅读本篇前,假设你已经对docker有了一定了解,且有过docker换件搭建…

在龙蜥 anolis os 23 上 源码安装 PostgreSQL 16.1

在龙蜥 OS 23上&#xff0c;本来想使用二进制安装&#xff0c;结果发现没有针对龙蜥的列表&#xff1a; 于是想到了源码安装&#xff0c;下面我们列出了PG源码安装的步骤&#xff1a; 1.安装准备 1.1.创建操作系统组及用户 groupadd postgres useradd -g postgres -m postgr…

Windows全系列 本地密码暴力破解

首先 咱们要准备两个工具&#xff1a; 第一个是 pwdump-master 第二个是 saminside_softradar-com.exe这两个工具 我会一并上传 需要的同学 可以自取本文章操作思路是&#xff1a; 第一步 首先把我刚刚提到的两个软件 以某种手段放置于机器中 如果是真实机 就用U盘 拷贝到真实机…

sCrypt 现已支持各类主流前端框架

sCrypt 现已支持各类主流前端框架&#xff0c;包括&#xff1a; ReactNext.jsAngularSvelteVue 3.x or 2.x bundled with Vite or Webpack 通过在这些支持的前端框架中集成sCrypt开发环境&#xff0c;你可以直接在前端项目里访问合约实例和调用合约&#xff0c;方便用户使用Se…

c++容器详解Vector、deque、list、set、multiset、map、multimap、queue、stcak、Array

容器 数据结构描述实现头文件向量(vector)连续存储的元素<vector>列表(list)由节点组成的双向链表,每个结点包含着一个元素<list>双向队列(deque)连续存储的指向不同元素的指针所组成的数组<deque>集合(set)由节点组成的红黑树,每个节点都包含着一个元素,…

Java自定义一个线程池

线程池图解 线程池与主线程之间通过一个阻塞队列来平衡任务分配&#xff0c;阻塞队列中既可以满足线程等待&#xff0c;又要接收主线程的任务。 线程池实现 使用一个双向链表实现任务队列 创建任务队列 //阻塞队列 public class BlockingQueue<T> {//双线链表private …

Mysql数据库多表数据查询问题

1、背景 线上某个业务数据分表存储在10个子表中&#xff0c;现在需要快速按照条件&#xff08;比如时间范围&#xff09;筛选出所有的数据&#xff0c;主要是想做一个可视化的数据查询工具&#xff0c;给产研团队使用。 2、实践 注意&#xff1a;不要在线上真实数据库操作&am…

使用Docker compose方式安装Spug,并结合内网穿透实现远程访问

文章目录 前言1. Docker安装Spug2 . 本地访问测试3. Linux 安装cpolar4. 配置Spug公网访问地址5. 公网远程访问Spug管理界面6. 固定Spug公网地址 前言 Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台&#xff0c;整合了主机管理、主机批量执行、主机在线终端、文件…

【Docker】python flask 项目如何打包成 Docker images镜像 上传至阿里云ACR私有(共有)镜像仓库 集成Drone CI

一、Python环境编译 1、处理好venv环境 要生成正常的 requirements.txt 文件&#xff0c;我们就需要先将虚拟环境处理好 创建虚拟环境&#xff08;可选&#xff09;&#xff1a; 在项目目录中&#xff0c;你可以选择使用虚拟环境&#xff0c;这样你的项目依赖将被隔离在一个…

3D点云目标检测:VoxelNex解读(带源码/未完)

VoxelNext 通用vsVoxelNext一、3D稀疏卷积模块1.1、额外的两次下采样1.2、稀疏体素删减 二、高度压缩三、稀疏池化四、head五、waymo数据集训练六、训练自己的数据集bug修改 通用vsVoxelNext 一、3D稀疏卷积模块 1.1、额外的两次下采样 使用通用的3D sparse conv&#xff0c;…

多线激光三维重建

交流联系点击&#xff1a;联系方式