如何利用 Snoatype Nexus Repository 搭建私有仓库

0. 相关文章

  1. 如何利用 Snoatype Nexus Repository 搭建私有仓库
  2. 利用 Snoatype Nexus Repository 搭建 Composer(PHP)私有仓库

1. 简介

Sonatype Nexus Repository 是一个集中的依赖包管理平台,可以:

  1. 支持多种格式的软件包源。比如我们常见的 maven、composer、npm、docker 等,不常见的 apt、yum、go、cocoapods 等,更不常见的自定义格式
  2. 管理私有仓库(hosted)。对不适合上传到公有源的软件包,提供私有部署和服务
  3. 代理远程仓库(proxy)。为公有源提供代理,加速下载和构建
  4. 仓库聚合(group)。将多个源聚合成一个,使用者只需要引入一个源
  5. 支持多种认证方式。比如 SSL、LDAP 等
  6. 支持第三方插件。除了官方支持的,还支持一些社区插件,更便利的支持其他格式的源
  7. 有社区免费版。有付费版,能力有差别

文档详见:

www.sonatype.com/products/so... help.sonatype.com/en/sonatype...

2. 安装和启动

本文只为介绍 Nexus 概念、使用,练手,所以只介绍最简便的 Docker 安装模式,另有可扩展高可用的部署方式,自行阅读文档(help.sonatype.com/en/install-...)。

详细的 Docker 安装步骤详见 hub.docker.com/r/sonatype/...

  1. 下载 Docker 镜像:
shell 复制代码
# 暂只能安装 3.75.0 之前的版本,因为要安装社区的 composer 扩展
docker pull sonatype/nexus3:3.71.0
  1. 启动 Docker 容器:
shell 复制代码
docker run -d -p 8081:8081 --name nexus sonatype/nexus3:3.71.0
  1. 访问验证:

浏览器访问 http://localhost:8081 验证(第一次启动稍慢,要做很多初始化):

尝试登录,需要账密:

shell 复制代码
# 获取初始账户 admin 的密码
docker exec -it nexus sh -c "cat /nexus-data/admin.password && echo"
  1. 第一次登录后会有一个新手引导,要求:
  • 重置密码
  • 是否开启匿名访问,先开启

3. 所支持的仓库格式(Format)

3.1 官方支持常见的格式

详见 help.sonatype.com/en/formats....。常见支持格式如下:

  • Maven(Java)
  • npm(Node.js)
  • NuGet(.NET)
  • Docker
  • PyPI(Python)
  • Raw(任意文件)

3.2 可以查看已有仓库

3.3 可以新建仓库

  1. 点击新建按钮:

  2. 选择想要的仓库格式:

  3. 填入信息,点击保存,创建仓库

4. 仓库类型(Type)

4.1 三种类型

  1. 如下所见,每个软件包格式,会有三种类型:

  2. 三种类型

每种类型有不同的作用:

  • proxy(代理仓库):代理远程源(比如官方源),提供本地缓存,加速构建
  • hosted(私有托管仓库):自己上传构建产物的私有源
  • group(聚合仓库):聚合多个其他 hosted 和 proxy 仓库,对外只暴露一个入口仓库源

4.2 三种类型的关系

graph TD subgraph Nexus Repository Hosted1["Hosted 仓库
(私有组件)"] Proxy1["Proxy 仓库
(代理官方源)"] Group1["Group 仓库
(聚合仓库)"] end ExternalMaven["外部仓库源
(如:composer、maven、npm 的官方源)"] Hosted1 --> Group1 Proxy1 --> Group1 ExternalMaven --> Proxy1

4.3 group 举例

比如默认存在的 maven-public,对外以一个源入口提供访问支持,内部会访问三个源:

5. 新建仓库、上传私有包、使用私有源

针对不同的软件源,详见不同的文档:

相关推荐
李日灐5 小时前
C++进阶必备:红黑树从 0 到 1: 手撕底层,带你搞懂平衡二叉树的平衡逻辑与黑高检验
开发语言·数据结构·c++·后端·面试·红黑树·自平衡二叉搜索树
qq_297574675 小时前
【实战】POI 实现 Excel 多级表头导出(含合并单元格完整方案)
java·spring boot·后端·excel
郝学胜-神的一滴6 小时前
超越Spring的Summer(一): PackageScanner 类实现原理详解
java·服务器·开发语言·后端·spring·软件构建
Tony Bai6 小时前
“Go 2,请不要发生!”:如果 Go 变成了“缝合怪”,你还会爱它吗?
开发语言·后端·golang
Victor3566 小时前
Hibernate(91)如何在数据库回归测试中使用Hibernate?
后端
Victor3566 小时前
MongoDB(1)什么是MongoDB?
后端
Victor35613 小时前
https://editor.csdn.net/md/?articleId=139321571&spm=1011.2415.3001.9698
后端
Victor35613 小时前
Hibernate(89)如何在压力测试中使用Hibernate?
后端
灰子学技术14 小时前
go response.Body.close()导致连接异常处理
开发语言·后端·golang
Gogo81615 小时前
BigInt 与 Number 的爱恨情仇,为何大佬都劝你“能用 Number 就别用 BigInt”?
后端