BaGet搭建Nuget私仓(window10&docker)

10 篇文章 0 订阅

一、搭建背景

在公司的日常开发中,不同项目会有公共的类库,搭建私仓,大家可通过Nuget进行类库的下载与更新,可减少后续维护工作量,今天分享一下如果使用Nuget搭建Nuget私仓。

二、框架简介

BaGet(发音为“baguette”)是一个轻量级的NuGet服务器。它是开源的、跨平台、可云部署的。
您可以在首选的平台上运行BaGet:

  • 在您的计算机上
  • Docker
  • Azure
  • AWS
  • Google Cloud
  • Alibaba Cloud (Aliyun)

三、私仓搭建

1、环境

操作系统:win10、CentOS 7
Docker:20.10.21

2、win10上部署

2.1安装SDK

1.请确保您已经安装了.NET SDK
在这里插入图片描述

2.2下载和解压BaGet包

(1)地址:https://github.com/loic-sharma/BaGet/releases ,下载BaGet.zip即可,另外两个是源码文件
在这里插入图片描述

(2)解压到本地自定义目录即可,可看到有以下文件:
在这里插入图片描述

2.3运行项目

(1)cmd命令行进入当前文件夹,并执行以下命令运行

dotnet BaGet.dll

(2)访问http://localhost:5000/ ,可看到与官方的nuget长得一毛一样
在这里插入图片描述

2.4类库项目

(1)创建一个名为【BaGetFirstLib】的类库项目
在这里插入图片描述

(2)创建一个名为【Test.cs】的文件,代码如下:

namespace BaGetFirstLib
{
    public class Test
    {
        /// <summary>
        /// 打印Hello Word!  1.0版本
        /// </summary>
        public void Fun()
        {
            Console.WriteLine("Hello Word!");
        }
        /// <summary>
        /// 新版本增加一个打印自身命名   1.1版本
        /// </summary>
        public static void Fun2()
        {
            Console.WriteLine($"{nameof(Fun2)}是静态方法,被直接调用了!");
        }
    }
}

(3)选中项目->右键属性->包,按实际需要填写相关的信息即可(后续版本迭代,可更改“包版本”后,重新生成项目即可)
在这里插入图片描述
(4)重新生成项目或解决方案,可在bin/Debug目录下,看到打包好的文件,因为我打包了两次,所以这里有1.0和1.1
在这里插入图片描述

2.5将包发布到私有Nuget中

(1)执行以下命令进行发布(注:BaGetFirstLib.1.0.0.nupkg为你打包的文件名)

dotnet nuget push -s http://localhost:5000/v3/index.json BaGetFirstLib.1.0.0.nupkg

(2)重新访问http://localhost:5000,可看到已经将我们打包的类库文件上传上来了
在这里插入图片描述

2.6使用BaGetFirstLib

(1)创建名为【BaGetConsoleApp01】的控制台项目
(2)点击配置“程序包源”,如下图所示,输入以下内容配置引用本地仓库需要的信息

Private Package source
http://localhost:5000/v3/index.json

在这里插入图片描述
在这里插入图片描述

(3)安装BaGetFirstLib
(4)Program.cs的内容替换如下:

// See https://aka.ms/new-console-template for more information
using BaGetFirstLib;
Console.WriteLine("即将打印来自BaGetFirstLib的内容:");
Test test = new Test();
Console.WriteLine("New一个对象来调用方法:");
test.Fun();

Console.WriteLine("");
Console.WriteLine("调用静态方法:");
Test.Fun2();

(5)可看到成功运行BaGetFirstLib类库中封装的方法
在这里插入图片描述

2.7使用密码增加安全性

上面我们publish的时候,都是不需要密码的,那如何配置publish时需要密码呢?步骤如下:
(1)找到BaGet解压文件夹中的【appsettings.json】,并编辑【ApiKey】,设置为你自己想设置的密码
在这里插入图片描述
(2)此时重新执行会失败,如下图(注:这里我在原来的Test类中随意加了一段代码,发布了1.2版,因后续如果没任何更改,也不会重新推送上去的):
在这里插入图片描述

(3)添加输入密码变量及值,可成功推送
在这里插入图片描述
在这里插入图片描述

3、Docker上部署

3.1创建相关文件

(1)创建一个名【baget】的文件夹,并在该文件夹中创建名为【baget-data】的文件夹,和【baget.env】文件,如下:

[root ~]# cd /
[root /]# ls
bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root /]# cd home
[root home]# ls
baget
[root home]# cd baget/
[root baget]# ls
baget-data  baget.env

(2)使用vim 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=你的密码

Storage__Type=FileSystem
Storage__Path=/var/baget/packages
Database__Type=Sqlite
Database__ConnectionString=Data Source=/var/baget/baget.db
Search__Type=Database

(3)使用以下命令拉取docker镜像

docker pull loicsharma/baget
3.2拉取镜像

(4)运行BaGet,向外暴露的端口为5555,如果访问不了,则需要到对应的服务器(阿里云、腾讯云等)后台设置安全组。$(pwd)会自动读取baget.env中的ApiKey:

3.3运行
docker run --rm --name nuget-server -p 5555:80 --env-file baget.env -v "$(pwd)/baget-data:/var/baget" loicsharma/baget:latest

在这里插入图片描述

3.4访问

在这里插入图片描述

四、结束

文章到此结束,只能说:Good Good Study,Day Day Up!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值