关于基于Nexus3和Docker搭建私有Nuget服务的探索
背景简介
NuGet是Microsoft开发平台的程序集包管理器,它由客户端工具和服务端站点组成,客户端工具提供给用户管理和安装/卸载软件程序包,以及打包和发布程序包到NuGet服务端站点等功能,服务端站点存储已经发行的软件包,并为NuGet客户端软件包库提供服务,使软件包共享给其他的开发者。
基于Docker来部署和创建一套可用的私有Nuget是我们的今天探索的主题,这在企业开发中是很重要的环节。我们将选用
Nexus
来搭建我们的私有Nuget服务。
适用于任何现代开发平台的基本工具可充当一种机制,通过这种机制,开发人员可以创建、共享和使用有用的代码。 通常,此类代码捆绑到“包”中,其中包含编译的代码(如 DLL)以及在使用这些包的项目中所需的其他内容。
对于.NET(包括 .NET Core),共享代码的 Microsoft 支持的机制则为 NuGet ,其定义如何创建、托管和使用面向 .NET 的包,并针对每个角色提供适用工具。
简单来说,NuGet 包是具有 .nupkg 扩展的单个 ZIP 文件,此扩展包含编译代码 (Dll)、与该代码相关的其他文件以及描述性清单(包含包版本号等信息)。 使用代码的开发人员共享创建包,并将其发布到公用或专用主机。 包使用者从适合的主机获取这些包,将它们添加到项目,然后在其项目代码中调用包的功能。 随后,NuGet 自身负责处理所有中间详细信息。
基于Docker On WSL2安装Nexus3
创建持久化目录
mkdir /opt/nexus && chown -R 200 /opt/nexus
docker run --publish 8081:8081 --publish 8082:8082 --publish 8083:8083 --name nexus --restart always \
--volume /opt/nexus:/nexus-data \
sonatype/nexus3:latest
登录Nexus
从右上角,登陆管理员账号,默认的账号:admin
,密码admin123
ok,你会看到密码错误的提示,很好,实际上密码是放在/nexus-data/admin.password
文件中了
那根据我们之前的volume的绑定,实际这个文件在/opt/nexus/admin.password
位置。
vim /opt/nexus/admin.password
将看到admin的真实密码,便可以拿去登录了
查看内置源仓储
进入Nexus
后,点击顶部的设置按钮
即可查看到内置的源仓储
我们会看到Nuget
已经默认支持了,并且创建了三个源仓储
- 托管仓库(nuget-hosted),负责包的上传
类型是hosted,表示托管仓库。我们一般把自己开发的包上传到该仓库中。
- 代理仓库(nuget.org-proxy),负责包的代理
类型是proxy,表示代理仓库。我们向它请求包(package)的时候,如果本地有,它就从本地提供,如果本地没有,它会从nuget.org下载到本地,然后给我提供这个包。
- 仓库组(nuget-group),负责包的获取
类型是group,表示仓库组,它集合了nuget.org-proxy
和nuget-hosted
,能对外提供上述两者中的包。
设置并获取Nuget授权
切换到Nexus
的左侧菜单Security
-Realms
页面。
将Active realms
列表中NuGet API-Key Realm
项,选中后添加到右侧激活清单中。
然后点击save
即可。
切换到Nexus
的右侧顶部菜单admin
用户页面的NuGet API Key
子页面。
点击Access API Key
按钮,弹出管理员密码授权,输入后即可得到一个NuGet API Key
如果你想一次设置以后都便捷使用,可以基于Nuget.exe做如下设置:
nuget setapikey 2187ef44-****-3037-afb3-*******29c5 -source http://localhost:8081/repository/{repositoryname}/
打包并上传
准备
先必须前往Nuget
官方下载一个最新的程序回来。
https://dist.nuget.org/win-x86-commandline/latest/nuget.exe
官网:https://www.nuget.org/downloads
我们需要将nuget.exe
丢到环境变量里面去,这样才可以方便在终端中使用它,你可以前往系统环境变量那里去添加一项,亦或教你一招,直接把nuget.exe
丢到C:\Windows
文件夹中即可。
打包
新建一个.Net Standard标准的类库程序,然后右键属性
-打包
,填写打包的版本和当前包版本描述和说明。
通过右键项目,打包操作进行打包
,亦或可以通过属性-打包中勾选在构建时生成Nuget包
在编译,得到我们的示例包:DemoPackage.1.0.0.nupkg
如果你习惯用命令行,也可以切换到项目文件夹路径执行以下打包终端命令:
在操作之前,你需要切换项目模式到Release,并且执行一次编译。
dotnet pack -c Release
上传
前往*.nupkg
所在目录,或者得到其完整路径。
参考命令模板:nuget push {dll}.nupkg {apiKey} -source {http://yourrepositorysource/}
例如:
nuget push DemoPackage.1.0.0.nupkg 2187ef44-****-3037-afb3-65b*******9c5 -source http://localhost:8081/repository/nuget-hosted/
通过访问链接可查到到已经推送成功
http://localhost:8081/repository/nuget-hosted/nuget
使用
打开Visual Studio,右键项目,选择管理Nuget程序包
,在进入Nuget包管理界面右上角的设置页面。
将前面的源地址添加进来,比如:http://localhost:8081/repository/nuget-hosted/
确定添加后,回到包管理界面,切换到浏览视图,你将能看到刚刚上传好的包,选中即可安装使用。
删除
参考命令模板:nuget delete {dll} {version} -Source {http://yourrepositorysource/} -apikey {apiKey}
例如:
nuget delete DemoPackage 1.0.0 -Source http://localhost:8081/repository/nuget-hosted/ -apikey 2187ef44-****-3037-afb3-65b*******9c5
自定义项目Nuget配置
有时候,我们希望自定义的Nuget能跟着项目走,那么很好办,我们只需要在项目跟目录新建一个名叫NuGet.Config
的文件即可
文件内容比如:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://www.nuget.org/api/v2" />
<add key="MySource" value="http://localhost:8081/repository/nuget-hosted/" />
</packageSources>
</configuration>
重启VS项目之后,选中项目,右键管理Nuget程序包
,可以看到我们定义的Nuget源,一样的可以快速安装已上传的包。
在Visual Studio Code中使用Nuget包管理插件
新建自定义的包仓库(Nuget Repository)
在Nexus
的Repository
页面的Repositories
中,可以点击创建按钮(Create Repository)
找到仓库类型nuget(hosted)
或者nuget(group)
任意即可,默认建议前者即可。
输入你想自定义的名称,比如:Demo
,点击创建即可。
注意,如果你选择的是nuget(group)
类型,将会代理获取到所有包,就是包括私有和公有的一起。
附录
- https://docs.microsoft.com/zh-cn/nuget/what-is-nuget
- https://hub.docker.com/r/sonatype/nexus3/
- https://www.sonatype.com/nexus/repository-pro
- https://www.cnblogs.com/Erik_Xu/p/9211471.html
关于基于Nexus3和Docker搭建私有Nuget服务的探索的更多相关文章
- 温故知新,基于Nexus3和Docker搭建私有Docker Mirrors镜像库
前言 接着上一篇文章关于基于Nexus3和Docker搭建私有Nuget服务的探索,我们可以进一步利用Nexus3来创建一个私有的Docker镜像库满足内部需求. 仓库类型 hosted: 本地存储, ...
- docker 部署私人 nuget 服务
使用docker搭建私有Nuget服务 首先在linux服务器上创建两个容器挂着目录 mkdir /home/nuget/db mkdir /home/nuget/packages 并且对该目录指定写 ...
- NET Core:搭建私有Nuget服务器以及打包发布Nuget包
docker 安装 https://www.cnblogs.com/liuxiaoji/p/11014329.html 1.使用docker搭建私有Nuget服务器 docker run -d -p ...
- 搭建内部NuGet服务
简介 NuGet相当于Python中的pip,nodejs中的npm,用来管理.net/.net core的程序集版本,也叫包管理器.在框架化.模块化开发中使用nuget服务必不可少,尤其是在abp开 ...
- 搭建基于.NetFrameWork的私有nuget服务端及打包项目发布上传
一.私有Nuget服务端搭建 1.创建一个.NetFramework web项目 2.在nuget管理中 安装 nuget.server包 3.安装完成后修改web.config里面的 apikey ...
- 搭建私有Nuget仓库
使用Nexus搭建私有Nuget仓库 https://www.cnblogs.com/Erik_Xu/p/9211471.html 前言 Nuget是ASP .NET Gallery的一员,是免费.开 ...
- 搭建私有 Nuget 服务器教程(1)
对于 .NET 开发者来说,nuget 是必不可少的程序包管理工具.相应地,大部分开发团队都需要在内部搭建 Nuget 服务器,以管理私有 nupkg 包.本教程所使用的 Nuget 服务器,不是微软 ...
- Docker 搭建私有仓库
Docker 搭建私有仓库 环境: docker 版本 :18.09.1 主机地址:192.168.1.79 1.运行并创建私有仓库 docker run -d \ -v /opt/registry: ...
- 使用BaGet 搭建私有nuget 服务器
使用BaGet 搭建私有nuget 服务器 netNugetBaGet 引言 为了增强代码的安全性和企业团队开发的高效性,搭建私有的package 包管理服务器是很有必要的,搭建私有的类库管理服务有以 ...
随机推荐
- 简单了解 MySQL 中相关的锁
本文主要是带大家快速了解 InnoDB 中锁相关的知识 为什么需要加锁 首先,为什么要加锁?我想我不用多说了,想象接下来的场景你就能 GET 了. 你在商场的卫生间上厕所,此时你一定会做的操作是啥?锁 ...
- Excel导出数据Excel.Application组件权限设置方法
很多网络应用系统都会涉及到数据采用Excel方式导出的模块,部分朋友问我到底怎么弄,其实方式很多种,目前比较优秀的方式还是直接用Excel的Excel.Application方式比较合适. 采用Exc ...
- [bug] Window远程连接hdfs错误:java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCrc32.nativeComput
原因 hadoop.dll 版本问题 解决 查询远程主机中hadoop版本,下载相同或稍高版本的hadoop.dll,将下载的 hadoop.dll 复制到windows系统的c:/window/sy ...
- 一、MegaCli命令介绍
一.MegaCli命令介绍 MegaCli是一款管理维护硬件RAID软件,可以用来查看raid信息等MegaCli 的Media Error Count: 0 Other Error Count: 0 ...
- 云计算OpenStack核心组件---cinder存储服务(10)
一.cinder介绍 1.Block Storage 操作系统获得存储空间的方式一般有两种: (1)通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区.格式化.创建文件系统: ...
- 高德Serverless平台建设及实践
导读 高德启动Serverless建设已经有段时间了,目前高德Serverless业务的峰值早已超过十万QPS量级,平台从0到1,QPS从零到超过十万,成为阿里集团内Serverless应用落地规模最 ...
- Python3.x 基础练习题100例(91-100)
练习91: 题目: 时间函数举例1. 程序: if __name__ == '__main__': import time print (time.ctime(time.time())) print ...
- Archlinux常用软件推荐 更新于2021年4月
记录一下常用软件 必装软件 包管理工具 yay 代替pacman的包管理 yaourt 备用 终端工具 zsh oh-my-zsh-git 搭配zsh利器` proxychains4 终端代理工具` ...
- Dubbo-admin安装测试
1.下载dubbo-admin 下载地址 2.解压到本地 3.在项目目录下打包dubbo-admin 使用命令 mvn clean package -Dmaven.test.skip=true 第一次 ...
- Python+Selenium自动化-安装模块和浏览器驱动操作方法
Python+Selenium自动化-安装模块和浏览器驱动操作方法 1.安装模块文件 pip install selenium 2.安装浏览器驱动 我们主要用的浏览器驱动有chrome浏览器.fire ...