使用docker的simple-nuget-server与baget搭建自己的.net私有nuget仓库 电脑版发表于:2023/4/24 19:19 [TOC] ## 使用simple-nuget-server镜像搭建私有nuget仓库 ### 新建2个挂载目录 一个用来存放db,一个用来存放包 ``` mkdir -p /home/nuget/db mkdir -p /home/nuge/packages ``` **给创建的挂载目录添加权限** ``` chmod -R 777 /home/nuget ``` ### 拉取镜像与启动容器 **拉取镜像** ``` docker pull sunside/simple-nuget-server ``` **启动容器** ``` docker run -d -p 9090:80 -v /home/nuget/db:/var/www/db -v /home/nuget/packages:/var/www/packagefiles -e NUGET_API_KEY=ee28314c-f7fe--bd77-e09eda3d0119 sunside/simple-nuget-server ``` 也可以不拉取镜像,直接启动容器,没有镜像它会自动拉取 **启动成功后访问页面可以看到内容如下:** ![](https://img.tnblog.net/arcimg/aojiancc2/ca0c6ac9077146c393b47a248385016b.png) 就很简单的一点内容,这个镜像没有去实现页面上的管理 ### 打包与上传 **怎么打包就不说了,项目右键打包即可,项目右键选择属性然后可以对包进行设置比如版本号什么的。打包好后可以把打包好的存放到一个文件夹里边,比如** ![](https://img.tnblog.net/arcimg/aojiancc2/e9080fc539bf41d981ef91fd8018d665.png) **然后进入这个目录,打开cmd命令窗口或者是powershell都可以,这里演示使用cmd** 进入目录打开cmd之后,执行命令把里边的库都推送到我们搭建的私有仓库里边 ``` dotnet nuget push *.nupkg -k ee28314c-f7fe--bd77-e09eda3d0119 -s http://192.168.6.226:9090/ ``` 这里的`*.nupkg`表示上传这个文件夹下所有以nupkg结尾的,然后后边还接了密钥与地址。执行成功后效果如下: ![](https://img.tnblog.net/arcimg/aojiancc2/a68b26c7cc9848f6806202ebad5f5eec.png) 上传成功后其实就可以下载了,下面就说一下下载 ### 从自己的私有仓库中下载包 **打开包管理器点击设置:** ![](https://img.tnblog.net/arcimg/aojiancc2/bd612269c9d64d2e9d737730d2ac712a.png) **添加一个包源,填写好名称与地址,主要是地址写成我们自己搭建的那个地址** ![](https://img.tnblog.net/arcimg/aojiancc2/c56c062804d043bd8663068184d0eaa6.png) **然后在程序包源哪里切换成我们刚刚创建的就可以看到我们上传的两个库了** 点击安装也是没有任何问题的! ![](https://img.tnblog.net/arcimg/aojiancc2/c480e39f985b42bc8dc6d1fa6a892f55.png) ## 使用baget镜像搭建私有nuget仓库 ### 进入var目录,创建baget文件夹 ``` cd /var mkdir baget ``` ![](https://img.tnblog.net/arcimg/aojiancc2/8792a05b6f2943d08a5a6b457fb02b6d.png) ### 进入刚刚创建的文件夹/var/baget,创建一个名为baget.env的文件存储BaGet的配置 ``` cd /var/baget vim baget.env ``` ![](https://img.tnblog.net/arcimg/aojiancc2/21f2b641fe874852b0e9584ae8643d1e.png) 在刚刚创建的配置文件中添加配置内容 ``` # 以下配置是用于发布包的API密钥,您应该将其更改ApiKey的值以保护服务器。 ApiKey= AJ-Nuget-Packages-API-Key Storage__Type=FileSystem Storage__Path=/var/baget/packages Database__Type=Sqlite Database__ConnectionString=Data Source=/var/baget/baget.db Search__Type=Database Mirror__Enabled=true ``` 这里边的数据配置使用的是Sqlite,也可以使用mysql,sqlserver等配置具体参考: https://loic-sharma.github.io/BaGet/configuration/ **创建成功效果如下,可以看到刚刚创建的文件,以及写入文件里边的配置信息** ![](https://img.tnblog.net/arcimg/aojiancc2/e643a4a934fa4aa1bb44150702710e0a.png) ### 在baget.env同目录创建一个baget-data 的文件夹 ![](https://img.tnblog.net/arcimg/aojiancc2/95e8d53360cf4c12b7860c02d443def7.png) ### 拉取baget镜像与启动容器 **拉取baget最新的镜像** ``` docker pull loicsharma/baget ``` **启动docker容器** 在刚刚创建的目录/var/baget中去执行命令 ``` docker run --name nuget-server --restart=always -d -p 9092:80 --env-file baget.env -v "$(pwd)/baget-data:/var/baget" loicsharma/baget:latest ``` >-d 后台运行 --name 容器名字为nuget-server -p 映射端口到9092 -env-file 指定配置文件 -v指定挂载目录 **启动成功即可访问,效果如下:** ![](https://img.tnblog.net/arcimg/aojiancc2/0060fd09d9e54b8a882bba19033a71b2.png) ### 打包与上传 和上面的一样,把地址改成现在的,以及密钥也修改一下。密钥在上面创建的配置文件里边看。上传地址在刚刚那个页面里边可以看 ![](https://img.tnblog.net/arcimg/aojiancc2/d43ace9aa1674b7fbb2b41ab3c6ff9f6.png) **切换到需要上传dll位置,执行命令:** ``` dotnet nuget push *.nupkg -k AJ-Nuget-Packages-API-Key -s http://192.168.6.226:9092/v3/index.json ``` **上传成功后久可以在页面上看到刚刚上传的包** ![](https://img.tnblog.net/arcimg/aojiancc2/82bf3bfd236c4b8abb2cb0a9c2f89b1c.png) 怎么下载和上面的一样就不在累述了。贴一下使用mysql作为存储的配置 ``` # 以下配置是用于发布包的API密钥,您应该将其更改ApiKey的值以保护服务器。 ApiKey= AJ-Nuget-Packages-API-Key Storage__Type=FileSystem Storage__Path=/var/baget/packages Database__Type=Mysql Database__ConnectionString=database=configcenter;data source=192.168.6.229;User Id=root;password=666666;port=3306 Search__Type=Database ```