前言
无论是Java还是.Net都有自己的包管理工具,在.Net世界里大家最常用的就是NuGet了,有人可能要问微软官方已经提供NuGet包管理平台,也非常好用,为啥一定要自己搭建一个私有的包管理仓库呢?当然了,凡是存在必然有其合理性,比如:很多大型公司严格限制公网环境;或者公司处于自我保护目的只允许在公司内部使用相关核心的程序;还有可能仅仅是因为程序员想方便自己开发。这些情况都迫使我们需要有个私有的包管理工具,来方便管理我们的工程项目的包的引用。
市面上有很多种工具都可以实现此功能,本文以BaGet为例通过Docker的方式快速搭建一个本地私有包管理器。操作如下:
环境搭建
1.初始化配置文件
首先找一个存放配置文件和包文件夹的路径。 举例存放路径为:D:\wsl\docker-volume\baget
。在此路径下新增配置文件和文件夹:
配置文件命名为:
baget.env
文件夹命名:
baget-data
在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
后出现下图则说明搭建成功。
红色字体为仓库上传地址。
生成自己的包文件
测试阶段随便找一个类库项目,右键点击打包。
在bin目录下会生成包文件。
发布包文件到私仓
在包文件所在目录下执行如下命令,把包文件推送到私仓中:
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
回到网页端可以查询到上传成功的包文件。
添加私仓地址
打开NuGet包管理器(工具-NuGet包管理器-管理解决方案的NuGet的程序包),在设置页面中添加私仓地址:http://localhost:5555/v3/index.json
。
此时已经可以查询到我们上传的包文件,可以在项目中直接使用。
延伸
通过以上步骤我们很快就搭建好了私有NuGet仓库,下次再使用时在Docker中直接启动容器即可。前文提到有很多工具都可以实现私仓的搭建,选则时可以按自己所需选择,如果想同时管理Java、.Net、Npm 建议选择Nexus,可以同时满足很多场景,有兴趣的小伙伴可以试着搭一次。