通过Docker快速搭建NuGet私仓原创
金蝶云社区-云社区用户26064194
云社区用户26064194
0人赞赏了该文章 2,013次浏览 未经作者许可,禁止转载编辑于2021年12月24日 10:48:32
summary-icon摘要由AI智能服务提供

本文介绍了如何通过Docker快速搭建NuGet私有仓库,主要解决大型公司或程序员需要私有包管理工具的场景。以BaGet为例,通过环境搭建、Docker启动镜像和验证成功等步骤实现。文末还提及了其他可选择的工具如Nexus,以及添加私仓地址到NuGet包管理器的使用方法。


通过Docker快速搭建NuGet私仓



前言

无论是Java还是.Net都有自己的包管理工具,在.Net世界里大家最常用的就是NuGet了,有人可能要问微软官方已经提供NuGet包管理平台,也非常好用,为啥一定要自己搭建一个私有的包管理仓库呢?当然了,凡是存在必然有其合理性,比如:很多大型公司严格限制公网环境;或者公司处于自我保护目的只允许在公司内部使用相关核心的程序;还有可能仅仅是因为程序员想方便自己开发。这些情况都迫使我们需要有个私有的包管理工具,来方便管理我们的工程项目的包的引用。

市面上有很多种工具都可以实现此功能,本文以BaGet为例通过Docker的方式快速搭建一个本地私有包管理器。操作如下:

环境搭建

1.初始化配置文件

首先找一个存放配置文件和包文件夹的路径。 举例存放路径为:D:\wsl\docker-volume\baget。在此路径下新增配置文件和文件夹:

  • 配置文件命名为:baget.env

  • 文件夹命名:baget-data

0.init.png

baget.env文件中添加如下配置信息,其中ApiKey为秘钥(推送包时会用到),可以自己调整。

# The following config is the API Key used to publish packages.
# You should change this to a secret value to secure your server.
ApiKey=NUGET-SERVER-API-KEY

Storage__Type=FileSystem
Storage__Path=/var/baget/packages
Database__Type=Mysql
Database__ConnectionString=database=configcenter;data source=192.168.3.100;User Id=root;password=666666;port=3306
Search__Type=Database

2.Docker启动镜像

在此目录下打开PowerShell,运行命令如下:

docker run -d --name nuget-server -p 5555:80 --env-file baget.env -v "$(pwd)/baget-data:/var/baget"

该命令会做如下事情:

  • -d 后台运行

  • --name 容器名字为nuget-server

  • -p 映射端口到5555

  • -env-file 读取配置文件信息;

  • -v 映射卷文件到baget-data文件夹

3.验证是否成功

如访问地址http://localhost:5555后出现下图则说明搭建成功。

1.login.png红色字体为仓库上传地址。2.upload.png

生成自己的包文件

测试阶段随便找一个类库项目,右键点击打包。

3.package.png

在bin目录下会生成包文件。

4.package-detail.png

发布包文件到私仓

在包文件所在目录下执行如下命令,把包文件推送到私仓中:

dotnet nuget push -s http://localhost:5555/v3/index.json -k NUGET-SERVER-API-KEY AbpFreesqlnew.Domain.1.0.0.nupkg复制代码

如果配置文件中调整了ApiKey的秘钥值,则在命令中 需要同步替换NUGET-SERVER-API-KEY为自己的秘钥。 如图所示我设定秘钥为: 9876

5.upload-powershell.png回到网页端可以查询到上传成功的包文件。

6.upload-success.png

添加私仓地址

打开NuGet包管理器(工具-NuGet包管理器-管理解决方案的NuGet的程序包),在设置页面中添加私仓地址:http://localhost:5555/v3/index.json

nuget-setting.png

add-new-nuget.png此时已经可以查询到我们上传的包文件,可以在项目中直接使用。

display-localnuget.png

延伸

通过以上步骤我们很快就搭建好了私有NuGet仓库,下次再使用时在Docker中直接启动容器即可。前文提到有很多工具都可以实现私仓的搭建,选则时可以按自己所需选择,如果想同时管理Java、.Net、Npm 建议选择Nexus,可以同时满足很多场景,有兴趣的小伙伴可以试着搭一次。


图标赞 0
0人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!