使用 Nexus3镜像搭设私有仓库(Bower 、Docker、Maven、npm、NuGet、Yum、PyPI)

  • Docker - 使用 Nexus3 搭设私有 NuGet 仓库

    • Nexus 默认帐号

    • Repositories

    • 上传组件包(Package)

    • Repositories 说明

    • 准备 Package

    • 上传 Package

    • 使用 Package

    • 拉取 Nexus 镜像

    • 运行 Nexus

    • NuGet

    • Nexus 私有仓库

    • 前言

    • 说明

    • 安装

    • Nexus NuGet 仓库简单使用

    • 总结


前言

NuGet

 Nuget 是免费、开源的包管理工具,专注于在 .Net.Net Core 平台应用开发过程中第三方组件库的管理,相对于传统单纯的 dll 引用要方便、科学得多。 
 其中 nuget.org 是最著名的 NuGet 公开库,但是企业内部开发的(业务)公共组件因为私密性或商业机密不能上传到公共库中,所以企业内部需要搭建一个私有的 NuGet 仓库【私服】来支持。虽然微软有提供的 NugetServer,但 NugetServer 用起来并不那么方便。 
 而且企业有可能不止使用 C# 一种语言,可能其他的语言组件也需要管理,比如:JavaDocker 镜像 等,NugetServer 就捉襟见肘,本文我给大家带来一款全能型的私服软件 Nexus

Nexus 私有仓库

Nexus 是一个强大的工具仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问。 
Nexus 支持管理 Bower 、Docker、Maven、npm、NuGet、Yum、PyPI 等工具包。最新版本的 Nexus3.x 全面支持 Docker 的私有镜像存储。

Nexus 官网:www.sonatype.com

说明

本文主要介绍怎么在 Linux (CentOS) 系统上使用 Docker 来部署 Nexus ,本文使用的是 Nexus v3.15.3 版本进行操作的。 
为什么使用 Docker 来部署 Nexus,是因为作者公司现在的基础设施为了方便维护全部使用 Docker 来部署。如果你不想使用 Dokcer 或者不想在 Linux 部署请前往官方网站下载对应安装包。

注意:本文是在 CentOS 系统下进行操作的。

安装

下面介绍的安装步骤是作者在 Linux 系统已经安装了 Docker 为前提条件。

拉取 Nexus 镜像

从 Docker Hub 拉取 Nexus 的镜像到本地,我这里拉取是最新版本的。你也可以拉取相对应版本的镜像。

  1. $ docker pull sonatype/nexus3:latest

  2. latest: Pulling from sonatype/nexus3

  3. a02a4930cb5d: Pull complete

  4. 2c6aa0f814dc: Pull complete

  5. ce7b7501fc94: Pull complete

  6. Digest: sha256:00ede0830e375c8a9758ea5d98dd020425850bbeccc822da68e7bad7ae92dbfa

  7. Status: Downloaded newer image for sonatype/nexus3:latest

镜像详细说明:https://hub.docker.com/r/sonatype/nexus3

运行 Nexus

在运行之前先创建一个目录用来存放 Nexus 持久化数据。

  1. $ mkdir -p /data/nexus

使用 Docker 命令运行 Nexus 。

  1. $ docker run -d -p 8081:8081 --name nexus -v /data/nexus:/nexus-data sonatype/nexus3:latest

  2. c90c62f4bd5d3f09d3f0d562e5fe41401954898729ed9f7407ed71296f372883

Docker 返回容器的的 Hash ID,代表容器已经启动,通过 http://serverip:8081 就能访问Nexus了。

640?wx_fmt=png

但是请求的时候拒绝我的请求,这个地方困扰了我很久。我第一步先排除是否是防火墙的问题。

  1. $ firewall-cmd --state

  2. not running

使用命令查看防火墙没有运行,第二步查看容器当前状态。

  1. $ docker container ls -a

  2. CONTAINER ID IMAGE COMMAND CREATED STATUS

  3. c90c62f4bd5d sonatype/nexus3:latest "sh -c ${SONATYPE_DI…" 27 minutes ago Exited

发现这个容器的状态变成 Exited 已经退出,找到问题所在可能是什么原因导致 nexus 没有启动起来。现在使用容器日志查一下挂掉的原因。

  1. $ docker container logs c90c

  2. mkdir: cannot create directory '../sonatype-work/nexus3/log': Permission denied

  3. mkdir: cannot create directory '../sonatype-work/nexus3/tmp': Permission denied

  4. OpenJDK 64-Bit Server VM warning: Cannot open file ../sonatype-work/nexus3/log/jvm.log due to No such file or directory


  5. Warning: Cannot open log file: ../sonatype-work/nexus3/log/jvm.log

  6. Warning: Forcing option -XX:LogFile=/tmp/jvm.log

  7. Unable to update instance pid: Unable to create directory /nexus-data/instances

  8. /nexus-data/log/karaf.log (No such file or directory)

  9. Unable to update instance pid: Unable to create directory /nexus-data/instances

从日志发现是因为 Nexus 在创建文件夹的时候没有权限。这个应该是上面在创建文件夹的时候没有分配权限导致的。下面我们给这个 /data/nexus 文件夹分配权限。

  1. $ chown -R 200 /data/nexus

  2. $ docker container start c90c62f4bd5d

  3. c90c62f4bd5d

重新启动容器后,再次访问一下 Nexus,下图显示可以打开 Nexus 。 
我们现在发现 Nexus 可以支持很多仓库格式。我们现在已经安装完成了,下面我们来讲怎么简单使用 Nexus。

640?wx_fmt=png

Nexus NuGet 仓库简单使用

下面将只会介绍一下怎么使用 NuGet ,至于使用 Nexus 其他仓库请前往官方查看详情文档。

Nexus 默认帐号

Nexus 的默认管理员账号 admin,密码 admin123 。可以在 Nexus 管理界面右上角 Signin 按钮可以登录Nexus。登录完成之后可以点击下面图片齿轮图标,进行管理 Nexus 。 
640?wx_fmt=png

Repositories

点击右菜单的 Repositories 按钮可以看到 Nexus 内置的默认仓库: 
640?wx_fmt=png

Repositories 说明

Nexus 默认已经创建好了 Nuget 以及其他的仓库,并且是创建了3个不同类型的仓库:nuget-groupnuget-hostednuget.org-proxy

nuget.org-proxy:类型是 proxy,表示代理仓库。我们向它请求包(package)的时候,如果本地有,它就从本地提供,如果本地没有,它会从 nuget.org 下载到本地,然后给我提供这个包。

nuget-hosted:类型是 hosted,表示托管仓库。我们一般把自己开发的包上传到该仓库中。

nuget-group:类型是 group,表示仓库组,它结合了 nuget.org-proxy 和 nuget-hosted ,能对外提供上述两者中的包。

小结: 
nuget-hosted 负责包上传,nuget.org-proxy 负责代理从 nuget.org 下载包到 Nexus 缓存中,nuget-group 负责提供包。一般使用 nuget-group 提供的 URL 就可以了,它可以把私服和公共库进行合并。

上传组件包(Package)

准备 Package

  1. 先使用 Visual Studio 创建一个 类库项目 命名为 NexusTest 。

    640?wx_fmt=png

  2. 在 解决方案资源管理器 选中 NexusTest 项目右击点击属性。进入项目设置页选择 打包 选项卡。勾选 在版本中胜出NuGet包 。

    640?wx_fmt=png

  3. 在 解决方案资源管理器 选中 NexusTest 项目右击点击 生成。生成成功之后在本项目的 bin\Debug 目录下找到 NexusTest.1.0.0.nupkg Nuget 文件,代表 Package 已经准备完成。

上传 Package

  1. 添加 Nuget Realms,因为 Nexus 认证 Nuget 是通过 Realms 来认证,因此要添加 Nuget Realms。

    640?wx_fmt=png

  2. 在 Upload 选中 nuget-hosted 点击进入,为什么要选中 nuget-hosted 上面已经说明。

    640?wx_fmt=png

  3. 把上面准备好的 NexusTest.1.0.0.nupkg Nuget 文件上传到 Nexus。

    640?wx_fmt=png

  4. 第三步上传成功,在 Browse 选中 nuget-hosted 点击进入。可以查看到已经上传成功。

    640?wx_fmt=png

使用 Package

  1. 获取 Nuget 程序包源地址,在 Nexus 的 Browse 找到 nuget-group 获取到地址。

    640?wx_fmt=png

  2. 在 Visual Studio 的 Nuget 管理器,点击齿轮进行设置 Nexus 地址。

    640?wx_fmt=png

  3. 添加 Nexus 私有 Nuget 仓库地址。

    640?wx_fmt=png

  4. 通过 Nuget 管理器 查询一下刚刚我们上传的 NexusTest 包。

    640?wx_fmt=png


总结

Nexus 基本可以满足企业的私服需求,而且还有一个可视化工具进行管理,降低企业管理成本。

引用:

Nexus 镜像详细说明:https://hub.docker.com/r/sonatype/nexus3/ 
使用 Nexus 搭建私有 Nuget 仓库:http://www.cnblogs.com/Erik_Xu/p/9211471.html 
Linux的权限:https://www.cnblogs.com/lhm166/articles/6605059.html 
关闭防火墙:https://blog.csdn.net/ytangdigl/article/details/79796961

640?wx_fmt=png转载是一种动力 分享是一种美德
640?wx_fmt=gif

如果喜欢作者的文章,请关注“magiccodes”订阅号以便第一时间获得最新内容。本文版权归作者和湖南心莱信息科技有限公司共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


QQ群:

编程交流群<85318032> 

产品交流群<897857351>


长沙线下技术社区已经创建,有兴趣者可以通过客服加群。接下来,我们会定期组织一些线下技术交流分享会,以飨大家。


640?wx_fmt=png640?wx_fmt=jpeg


原文链接:

https://www.cnblogs.com/lfzm/p/10606524.html

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

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

相关文章

P3293 [SCOI2016]美味

P3293 [SCOI2016]美味 题意&#xff1a; 有n个数组a&#xff0c;现在有m个询问&#xff0c;每次给出一个b和x&#xff0c;问b xor (a[i] x)的最大值是多少&#xff1f; 题解&#xff1a; 不难看出01Trie的题目 我们设ansa[i]x,我们想要b xor ans的最大值&#xff0c;这个很…

[HNOIAHOI2018] 转盘(线段树维护单调栈)

problem 洛谷链接 solution 结论&#xff1a;最优方案中一定有一种是全程不停的。 断环成链&#xff0c;接一个 [1,n][1,n][1,n] 在后面形成 2n2n2n 的序列&#xff0c;同时将时间戳逆过来。 转化成&#xff1a;在 ttt 时刻从某个位置 i∈[n,2n)i\in[n,2n)i∈[n,2n) 开始往…

P2446 [SDOI2010]大陆争霸

P2446 [SDOI2010]大陆争霸 题意&#xff1a; n个点&#xff0c;m个边&#xff0c;wi为每个边的边权&#xff0c;对于每个点i&#xff0c;其被l个点保护着&#xff0c;也就是如果保护其的点没有被破坏&#xff0c;点i无法被破坏(也无法经过其前往其他点)。现在从1出兵(无限数量…

EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽

DbContextPool 是 ASP.NET Core 2.1 引入的新特性&#xff0c;可以节省创建 DbContext 实例的开销&#xff0c;但没有想到其中藏着一个小坑。最近有一个 ASP.NET Core 项目持续运行一段时间后日志中就会出现数据库连接池达到最大连接数限制的错误&#xff1a;System.InvalidOpe…

AtCoder4505 [AGC029F] Construction of a tree(二分图+网络流+dfs+构造)

problem 洛谷链接 solution 考虑 Ω{E1,...,En−1}\Omega\{E_1,...,E_{n-1}\}Ω{E1​,...,En−1​} 的一个子集 SSS&#xff0c;记 f(S){u∣u∈Ei∈S}f(S)\{u\mid u\in E_i\in S\}f(S){u∣u∈Ei​∈S}。 显然当 S≠∅∧∣f(S)∣≤∣S∣S\ne\empty\wedge\big|f(S)\big|\le |…

P2447 [SDOI2010]外星千足虫

P2447 [SDOI2010]外星千足虫 题意&#xff1a; 有n个未知数 给你一个m行n1列的式子&#xff0c;对于每行&#xff0c;1到n列为这个n个未知数的系数&#xff0c;第n1列为该行式子的和mod2&#xff0c;问n个未知数是否有唯一解&#xff0c;并输出&#xff0c;并输出最少需要前k…

Kubernetes架构为什么是这样的?

小编序&#xff1a;在上周发布的《从“鸿沟理论”看云原生&#xff0c;哪些技术能够跨越鸿沟&#xff1f;》一文中&#xff0c;灵雀云CTO陈恺表示&#xff1a;Kubernetes在云计算领域已经成为既定标准&#xff0c;进入主流市场&#xff0c;最新版本主要关注在稳定性、可扩展性方…

AtCoder4380 [AGC027F] Grafting(拓扑排序)

problem 洛谷链接 solution 首先特判掉两棵树一开始就相同的情况。 那么接下来就是一定要操作才能相同的情况了。 群龙无首不行&#xff0c;我们先定根。不妨枚举第一步的叶子操作&#xff0c;即枚举叶子以及其接的点。 然后对于 A,BA,BA,B 都以这个叶子为根&#xff0c;…

开源 , KoobooJson一款高性能且轻量的JSON框架

在C#领域&#xff0c;有很多成熟的开源JSON框架&#xff0c;其中最著名且使用最多的是 Newtonsoft.Json ,然而因为版本迭代,其代码要兼容从net2.0到现在的最新的net框架,并且要支持.net平台下的其它语言,所以最新发布版本的Newtonsoft.Json其dll大小接近700k,另一方面,因为其复…

高斯消元模板

高斯消元通用 #include<stdio.h> #include<algorithm> #include<iostream> #include<string.h> #include<math.h> using namespace std;const int MAXN50;int a[MAXN][MAXN];//增广矩阵 int x[MAXN];//解集 bool free_x[MAXN];//标记是否是不确…

[CodeForces gym 102956 D] Bank Security Unification(位运算优化dp)

problem cf链接 solution 读完题先直接暴力 dpdpdp 拿出来&#xff0c;dpimax⁡j<i{dpj(fi&fj)}dp_i\max_{j<i}\big\{dp_{j}(f_i\&f_j)\big\}dpi​maxj<i​{dpj​(fi​&fj​)}。 谁能优化谁就是爸爸 假设存在 j<k<ij<k<ij<k<i&…

P2403 [SDOI2010]所驼门王的宝藏

P2403 [SDOI2010]所驼门王的宝藏 题意&#xff1a; R * C的地图上有n个宝藏&#xff0c;给你n个宝藏的坐标&#xff0c;每个宝藏的位置上还有一个传送门&#xff0c;传送门有三种类型&#xff0c;1.可以传送到同行的其他宝藏位置&#xff0c;2.可以传送到同列的其他宝藏位置 …

分布式系统的构建原则

什么是构建一个可维护和可扩展的系统的意义&#xff1f;在早期&#xff0c;一个系统的形态&#xff0c;只是满足用户和服务器资源之间的通道&#xff0c;唯一要扩展和维护的是系统后面的资源&#xff0c;保证资源的可用和够用&#xff0c;而系统本身的压力并不大。系统设计跟我…

[HEOI2016TJOI2016]排序(二分+线段树)

problem 洛谷链接 solution 在一个丝毫没有单调性的问题中很难想到将其转化为二分。 二分最后在第 ppp 位置上的值 xxx。 然后将所有 ≥x\ge x≥x 的赋为 111&#xff0c;所有 <x<x<x 的赋为 000。 经过一系列区间排序操作后&#xff0c;最后我们只在乎第 ppp 位…

可持久化4--可持久化并查集

可持久化并查集 可持久化并查集 按秩合并并查集 可持久化数组 首先并查集不能采用路径压缩&#xff0c;这是因为一次findR操作中&#xff0c;fa数组的很多位置&#xff08;u->ru&#xff09;会发生修改&#xff0c;由于每次修改都需要在可持久化数组上复制产生log个新结…

ASP.NET Core 2.2中的Endpoint路由

在ASP.NET Core 2.2中&#xff0c;新增了一种路由&#xff0c;叫做Endpoint&#xff08;终结点&#xff09;路由。本文将以往的路由系统称为传统路由。本文通过源码的方式介绍传统路由和Endpoint路由部分核心功能和实现方法&#xff0c;具体功能上的差异见官方文档。在升级到AS…

AtCoder2063 [AGC005E] Sugigma The Showdown(博弈论)

problem 洛谷链接 solution 考虑一条 (u,v)(u,v)(u,v) 的红边&#xff0c;在蓝树上 u,vu,vu,v 两点距离 ≥3\ge 3≥3。 如果先手到达 u,vu,vu,v 其中任何一点且下一步后手行动无法抓住先手&#xff0c;那么这个游戏就将进入死循环了。 通过画图&#xff0c;你会发现这个结…

基于ASP.NET Core的模块化设计: 虚拟文件系统

土牛亲自录制的本文介绍视频Abp中文网(https://cn.abp.io/)提供翻译字幕基于ASP.NET Core的模块化设计: 虚拟文件系统简介创建模块化的应用程序很困难. 构建模块化的用户界面更加困难. 需要单独开发模块的页面和组件,但是最后要把它们集成在一起像单个UI一样创建这样的模块化架…

[SDOI2012]吊灯(结论)

problem 洛谷链接 solution 显然&#xff0c;颜色相同的灯泡形成一个连通块&#xff0c;且连通块的大小 i∣ni\mid ni∣n。 这道题要能发现一个结论&#xff1a;一定至少存在一种颜色的连通块 满足该联通块内的任意一个节点 都不是异种颜色点 的父亲。 即&#xff0c;至少…

一文带你全面认识Excel催化剂系列功能

2018年1月1日决定打造一款Excel插件&#xff0c;取名为Excel催化剂&#xff0c;历时半年的时间&#xff0c;在努力打造出和传统插件有功能差异化的基础上&#xff0c;让大家可以真正得到一些有价值非鸡肋的功能&#xff0c;对开发什么样的功能也构思了许久&#xff0c;同时对免…