Nexus:一站式私有仓库管理(NuGet、Maven、npm、Docker)

我们在日常开发中经常需要使用到私有仓库,比如 dotNET 中的 NuGet、Java 中的 Maven、前端的 npm,还有 Docker 镜像,每一个私有仓库各自管理,维护起来比较麻烦,而 Nexus 可以将其统一起来。

本文将介绍 Nexus 的安装以及怎样进行 NuGet 、Maven、npm 和 Docker 镜像的管理。

环境

  • Nexus:3.29.2

  • NuGet:5.5.1

  • Maven:3.6.3

  • NPM:6.14.8

  • Docker:19.03.13

  • 操作系统:CentOS 7

安装

可以使用直接在服务器进行安装或者使用 Docker 镜像的方式安装,本文采用 Docker 镜像的方式安装。

1、执行下面的命令进行容器的构建。

docker run -d -p 8081:8081 -p 8082:8082 --name nexus_8081 -v /root/data/nexus:/nexus-data --restart=always sonatype/nexus3
  • 命令中的 -v /root/data/nexus:/nexus-data 是将 Nexus 的数据目录映射到本地;

  • nexus 目录需要给编辑的权限;

  • 8082 端口的映射目的是为了推送 docker 镜像。

2、执行下面命令开放端口。

firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --reload

3、构建完后,需要等几十秒到几分钟不等,程序有一个初始化的过程,然后访问 http://ip:8081 ,可以出现下图界面:

4、根据弹窗的提示在映射的目录 /root/data/nexus 中找到 admin.password 中的内容就可以正常登录了。

NuGet

1、在 Repositories 功能中创建 NuGet 的私有仓库 NuGetTest ,仓库模板选择 nuget(hosted) 。

2、在 VS2019 中创建一个 NugetTest 的类库项目,在项目上点击右键→打包,在项目的 bin/Debug 目录中会生成 NugetTest.1.0.0.nupkg 文件。

3、点击「admin」→「NuGet API Key」,在该功能界面获取 key ,这个 key 在推送 NuGet 包时需要用到。

4、将 nuget.exe 程序文件也放到 bin/Debug 目录中,然后打开命令行进入到该目录,执行下面命令进行包的推送。

nuget.exe push NugetTest.1.0.0.nupkg dab3d4df-1eec-36e0-9b75-09b5b4b0ac41 -source http://10.211.55.6:8081/repository/NuGetTest

推送成功如下图:

5、在 VS2019 中的 NuGet 包管理器中添加源。

6、在引用时选择添加的 NuGetTest 源,如下图:

Maven

1、在 Repositories 功能中创建 Maven 的私有仓库 MavenTest ,仓库模板选择 maven(hosted),Deployment policy 需要设置为 Allow redeply,否则在推送时会报 400 的错误。

2、在 Maven 的配置文件 /apache-maven-3.6.3/conf/settings.xml 中的 Servers 节点添加 Server 配置,如下:

<server><id>releases</id><username>test</username><password>000000</password>
</server>
  • username 和 password 是在 Nexus 中创建的测试账户;

  • id 需要和 Maven 项目中的 pom.xml  文件中配置的 id 一致。

3、在 IntelliJ IDEA 中创建 Maven 项目 MavenTest,在项目中的 pom.xml 文件中添加如下内容:

<distributionManagement><repository><id>releases</id><name>releases</name><url>http://10.211.55.6:8081/repository/MavenTest/</url></repository>
</distributionManagement>
  • id:和上面的 settings.xml  文件中的 id 一致即可;

  • url:在 Nenux 中创建的 Maven 仓库的地址。

4、因为仓库创建的是 Release 版本的,如果 pom.xml 文件的 version 中包含 SNAPSHOT ,需要删除,否则在推送时会报 400 的错误。

5、在 IDEA 工具的 Maven 模块中进行 depoly 。

6、推送成功后,在 Nexus 中可以看到如下内容:

7、创建一个 spring boot 的项目,并修改 pom.xml 文件,在 dependencies 节点添加依赖,并添加 repositories 配置,如下:

<dependencies><dependency><groupId>org.example</groupId><artifactId>MavenTest</artifactId><version>1.0</version></dependency>
</dependencies>
<repositories><repository><id>releases</id><name>releases</name><url>http://10.211.55.6:8081/repository/MavenTest/</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></repository>
</repositories>

8、在 IDEA 中的 build 模块中进行同步就可以将 maven 包拉取到项目中。

NPM

1、在 Repositories 功能中创建 npm 的私有仓库 NpmTest ,仓库模板选择 npm(hosted),Deployment policy 需要设置为 Allow redeply,否则在推送时会报 400 的错误。

2、使用 vue 创建一个项目 nexus-test 。

3、使用下面命令进行本地注册,后面的地址为创建的 npm 私有库的地址。

npm config set registry http://10.211.55.6:8081/repository/NpmTest/

4、想要将自己的 npm 包推送到私有仓库中,需要先使用下面的命令进行登录。

npm login –registry=http://10.211.55.6:8081/repository/NpmTest/

5、修改 vue 项目根目录中的 package.json 文件,将 private 设置为 false ,版本号 version 根据需要进行修改。

6、在 Nexus 的 Realms 模块进行设置,将 npm Bearer Token Realm 选到右边的 Active 栏中,此处不设置,在推送时会出现 401 的错误。

7、执行下面命令进行包的推送:

npm publish --registry=http://10.211.55.6:8081/repository/NpmTest

8、创建一个新的 vue 项目 nexus-test1 来进行私有仓库的使用,先进行仓库地址的注册。

npm config set registry http://10.211.55.6:8081/repository/NpmTest/

9、执行 npm install nexus-test 进行包的安装,安装成功如下图:

Docker

1、在 Repositories 功能中创建 docker 的私有仓库 DockerTest ,仓库模板选择 docker(hosted) 。

  • 勾选 http,设置端口为 8082 ,此处的端口为创建 Nexus 容器时设置的 8082 端口 ;

  • 勾选允许匿名拉取镜像;

  • 勾选运行客户端通过 API 访问。

2、在 Nexus 的 Realms 模块进行设置,将 Docker Bearer Token Realm 选到右边的 Active 栏中。

3、在 CentOS 7 系统中安装 Docker ,然后再 /etc/docker/ 目录中创建 daemon.json 文件,内容如下:

{"insecure-registries": ["10.211.55.6:9999"]
}

4、执行下面命令进行配置的加载。

systemctl daemon-reload
systemctl restart docker

5、在 root 目录中创建 nexus-docker 目录,目录中创建 Dockerfile 文件用来构建一个新的镜像,内容如下:

FROM nginx:latest
COPY . /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

6、执行下面命令进行镜像的构建和推送到服务端。

# 构建镜像
docker build -t nexus-docker .
# 将镜像 tag 成服务端的地址
docker tag nexus-docker-test:latest 10.211.55.6:8082/nexus-docker-test:latest
# 进行登录 
docker login -u test -p 000000 10.211.55.6:8082
# 推送镜像
docker push 10.211.55.6:8082/nexus-docker-test:latest

操作成功如下图所示:

7、使用镜像的时候,只要服务器进行了第三步中的地址注册,就可以使用 docker pull 10.211.55.6:8082/nexus-docker-test:latest 进行镜像拉取。

希望本文对您有所帮助!

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

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

相关文章

众里寻 Bug 千百度,蓦然回首,它却在隔壁老张处……

程序员与 Bug 是一对矛盾的存在&#xff0c;程序员既要在解决 Bug 中获得成就感&#xff0c;同时也讨厌 Bug 本身的存在。“程序不息&#xff0c;Bug 不止”&#xff0c;程序员在与 Bug 的斗争中&#xff0c;也有很多有趣的事情发生&#xff0c;我们整理了一些程序员在调试 Bug…

Blazor WASM 实现人民币大写转换器

点击上方蓝字关注“汪宇杰博客”导语.NET 5 正式发布已经有一段时间了&#xff0c;其中 Blazor 技术是该版本的亮点之一。作为微软技术的被坑者&#xff0c;年少的我曾经以为 SilverLight 能血虐 Flash&#xff0c;Zune 能团灭 iPod&#xff0c;WP 能吊打 iPhone&#xff0c;UW…

金山安全实验室公布中国互联网六大类钓鱼网站

金山安全实验室公布中国互联网六大类钓鱼网站金山安全实验室研究人员对中国大陆钓鱼网站的普遍特征进行分析&#xff0c;发现以下六个领域最容易被钓鱼网站***&#xff1a;1.QQ十年庆典、QQ抽奖、腾讯活动&#xff1b;2.证券、股票分析、黑庄、理财专家等财经领域&#xff1b;3…

程序员过关斩将--领导说我的类的职责不单一

“为什么类的职责要单一化&#xff1f;“类的职责单一化很容易吗&#xff1f;首先&#xff0c;我要提醒一下看到这篇文章的同学&#xff0c;我认为保证类&#xff08;一定是类吗&#xff1f;&#xff09;的单一职责并不容易软件开发过程中&#xff0c;自古就流传着几大规则&…

从概念到案例,机器学习应该掌握的20个知识点

随着科技的发展&#xff0c;计算机对人类的生产活动和社会活动产生了极为重要的影响&#xff0c;同时以强大的生命力飞速发展着。目前计算机正广泛用于社会各个领域&#xff0c;并朝着微型化、网络化、智能化和巨型化的方向前进。说到智能化&#xff0c;大家最先想到的应该就是…

闲来没事写个记事本玩玩!!!

这两天工作压力大&#xff0c;还好今天见着太阳了&#xff0c;这会儿没事写了个记事本&#xff0c;功能单一&#xff0c;适合练手&#xff0c;可能对新手会有所帮助&#xff0c;贴上来看看吧&#xff0c; 说到实现 记事本&#xff0c;我们应该选择什么样的控件呢&#xff0c;Te…

LG将授权webOS给其他电视厂商使用

喜欢就关注我们吧&#xff01;LG 将向其他公司提供 webOS。根据 LG 发布的公告&#xff0c;其自家电视机搭载的专有系统 webOS 将会授权给其他的外部电视厂商使用。被授权使用 webOS 的电视厂商还会获得来自 LG 的 Magic Motion 遥控器&#xff0c;此外&#xff0c;系统的语音控…

数据之美,堪比好莱坞大片!

看完下面的几张图&#xff0c;你就知道自己有多无知了。堪称是好莱坞大片啊&#xff01;1城市3D空间通过2D瓦片图层的3D化&#xff0c;能够在经度维度、量级、时间多个维度上真实还原城市3D空间。例子中为模拟的轨迹数据和旧金山食物供应商分布。2GPS轨迹分布以三种不同的方式描…

HSRP的配置问题

HSRP的配置问题<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />实验目的&#xff1a;理解和掌握路由热备份的配置步骤和原理实现网关的冗余功能实验环境&#xff1a;如下图所示<?xml:namespace prefix v ns "urn:sch…

数学从小学开始“梯次掉队”?别让课本的枯燥“浇灭”孩子对数学的兴趣

1、2、3、4、5……从孩子用手指数数开始&#xff0c;就与数学结下了不解之缘。进入幼儿园&#xff0c;在老师的指导下画出三角形&#xff0c;圆形等&#xff0c;这是数学中的几何。稍大一点&#xff0c;到商店里买东西&#xff0c;开始懂得买的东西是多还是少&#xff0c;是大还…

用算法撩妹都不会,别跟我说你是程序员

程序员浪漫的表白方式可以说是花样百出&#xff0c;为什么用在自己身上就没效果呢&#xff1f;作为一个程序员“身边的女生”&#xff0c;小编觉得&#xff0c;大部分程序员没有女朋友&#xff0c;很可能是恋爱技能bug太多&#xff0c;当你还不确定那个女生对你的喜欢程度&…

从工作经历和实践理论看工业互联网的发展

一.前言本篇文章是对以前点点滴滴的记录整理而成&#xff0c;也是我们做iNeuOS工业互联网操作系统进行的深入思考。本篇文章有宣传产品之嫌&#xff0c;但是确实是我们理念与实践相结合的产物。下面的图是我2017年参加完工博会后&#xff0c;在QQ群里做的调查&#xff0c;仅供大…

关于c语言的符号常量以下叙述中正确的是,关于C语言的符号常量,以下叙述中正确的是...

摘要&#xff1a;项指需要哪一以下标不上报&#xff0c;关于女病工作普查普治评价进行对妇时。下列正确的是说法&#xff0c;符号治愈率达&#xff0c;告说治疗者某广某药斑狼了2例红疮患&#xff0c;其中痊愈0例。行为个体这种矫正称为方法&#xff0c;常量吸烟济处烟者予经当…

2017年终奖发放,程序员人均11776元排名第一!

又到了一年一度的“晒年终奖”时刻了&#xff01;你敢晒一波吗&#xff1f;快过年了&#xff0c;又到了一年一度的年终奖盘点时间&#xff01;此可谓扎心扎心再扎心&#xff01;那么&#xff0c;你2017年的年终奖有多少&#xff1f;满意不&#xff1f;2017年全国白领人均年终奖…

因MemoryCache闹了个笑话

前言是这么一回事&#xff1a;我正在苦思一个业务逻辑&#xff0c;捋着我还剩不多的秀发&#xff0c;一时陷入冥想中……突然聊天图标一顿猛闪&#xff0c;打开一看&#xff0c;有同事语音&#xff1b;大概意思是&#xff1a;同事把项目中Redis部分缓存换成MemoryCache/Memcach…

Coursera吴恩达《卷积神经网络》课程笔记(1)-- 卷积神经网络基础

推荐阅读时间&#xff1a;8min~15min主要内容&#xff1a;卷积神经网络《Convolutional Neural Networks》是Andrw Ng深度学习专项课程中的第四门课。这门课主要介绍卷积神经网络&#xff08;CNN&#xff09;的基本概念、模型和具体应用。该门课共有4周课时&#xff0c;所以我将…

纯c语言实现的改进暗通道去雾算法测试程序(附赠大量测试图像),基于改进暗通道先验算法的图像去雾...

邱清辉摘要&#xff1a;针对普通暗通道先验算法去雾能力的不足&#xff0c;本文提出了一种改进算法&#xff0c;通过采用高斯平滑将原图像分为基础子图和细节子图&#xff0c;基础子图采用暗通道先验算法&#xff0c;细节子图采用gamma变换方法&#xff0c;再采用图像融合进行融…

为什么离开学校后,学习能力直线下降?

最近几年&#xff0c;人工智能浪潮层层推进&#xff0c;对各大科技公司产生巨大影响。百度推出Apollo无人车计划&#xff0c;阿里建立达摩院&#xff0c;腾讯成立的AI Lab虽布局较晚却也不甘人后。ChinaAI已是大势所趋&#xff0c;吸引的不仅是大公司&#xff0c;更有许多人工智…

android6.0重力工具箱,重力工具箱 GravityBox For Android8.0/8.1(Oreo)稳定版发布!

作为功能最强大的Xposed框架模块之一&#xff0c;重力工具箱 GravityBox的更新适配一直也是最积极的&#xff0c;本次发布的8.x专用版本也算是比较及时&#xff0c;每一个大的Android版本&#xff0c;重力工具箱基本都会有一个专门的版本来适配&#xff0c;当然基础功能也会略有…

如何在 ASP.Net Core 中使用 MediatR

MediatR 是一个 中介者模式 的.NET开源实现&#xff0c; 中介者模式 管控了一组对象之间的相互通讯并有效的减少了对象之间错综复杂的相互依赖&#xff0c;在 中介者模式 中&#xff0c;一个对象不需要直接和另一个对象进行通讯&#xff0c;而是通过 中介者 进行转达&#xff0…