通过Docker快速搭建NuGet私仓

通用封面.png

前言

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

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

环境搭建

1.初始化配置文件

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

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

0.init.png

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

1
2
3
4
5
6
7
8
9
ini复制代码# 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=Sqlite
Database__ConnectionString=Data Source=/var/baget/baget.db
Search__Type=Database

2.Docker启动镜像

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

1
css复制代码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

发布包文件到私仓

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

1
bash复制代码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%