首页 > 其他分享 >NuGet私有服务器ProGet Docker搭建和公司中实战用法

NuGet私有服务器ProGet Docker搭建和公司中实战用法

时间:2023-02-20 08:55:19浏览次数:43  
标签:ProGet -- nuget NuGet inedo 服务器 Docker

 一、什么时候需要用到NuGet私有服务器

  很多公司中架构师会搭建一个统一的项目基础架构模板,然后全部新项目都会拿这个基础架构来开发新的项目,那架构中就会有很多的中间件,比喻公司内部的封装好的Redis中间件,访问数据库的中间件,MQ中间件,小程序中间件等等。

  现在很多项目都用这个模板开发了,然后其中一个中间件有问题了或要加功能,那么全部项目都要把这个中间件修改一遍。可能不同项目在不同的组不同的负责人,通知起来也麻烦。这时候就可以把这些中间件做成一个NuGet包了,然后全部项目都可以通过NuGet包安装,有更新就更新NuGet包,各个项目更新NuGet包就行了。但这些NuGet包不能上传到公开的NuGet服务器上,因为这些NugGet包只能公司内部用的,为了安全性考虑,就需要搭建自己的私有NuGet服务了。

 

 二、ProGet搭建

  Nexus:支持NuGet,有点重。

  MyGet:Nuget云服务,不适合企业内私有部署。

  BaGet:简单易用,但还没有实现身份认证,上传的包谁都能Down下来,界面也不需要登录就能访问,因为安全原因只能放弃。

  ProGet:商业软件,支持nuget、npm、docker等,但它是.NET生态应用,而且还提供了免费版本,身份认证、权限方面控的很好,功能也多。

  这里各种对比下选用ProGet 用Docker方式搭建一个内部的NuGet服务器。

2.1、ProGet搭建

创建网络

这里是创建一个和SQL Server共同的网络,如果已经装有SQL Server了,则不需要这步

docker network create inedo

 

 

 

创建一个SQL Server

如果有SQLServer数据库,跳过这一步。文档里只说了需要SQL Server,是否兼容其它数据库还没尝试,旧版本的时候是可以用PgSQL的。

#docker 部署免费版本sqlserver
docker run --name inedo-sql \
  -v /etc/localtime:/etc/localtime:ro \
  -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=sa123456' \
  -e 'MSSQL_PID=Express' --net=inedo --restart=unless-stopped \
  -d mcr.microsoft.com/mssql/server:2019-latest
-v /etc/localtime:/etc/localtime:ro:让容器用本机的日期

 

创建一个名叫ProGet的数据库,为了避免问题,请确保将其排序规则指定为SQL_Latin1_General_CP1_CI_as

#sqlserver 创建一个数据库ProGet
docker exec -it inedo-sql /opt/mssql-tools/bin/sqlcmd \
  -S localhost -U SA -P 'sa123456' \
  -Q 'CREATE DATABASE [ProGet] COLLATE SQL_Latin1_General_CP1_CI_AS'

 

 启动ProGet容器

先创建一个文件夹挂载上传的包,这里创建在

#创建目录挂载上传的包
mkdir -p /home/proget/packages

 

 启动ProGet容器

  #启动ProGet容器
docker run -d --name=inedo --restart=unless-stopped \
  -v /etc/localtime:/etc/localtime:ro \
  -v /home/proget/packages:/var/proget/packages -p 8180:80 --net=inedo \
  -e SQL_CONNECTION_STRING='Data Source=inedo-sql; Initial Catalog=ProGet; User ID=sa; Password=sa123456' \
  proget.inedo.com/productimages/inedo/proget:latest
SQL_CONNECTION_STRING:SQL Server数据库连接字符串

 

 

 这时候打开ip:8180端口,就能成功访问NuGet服务器界面了。

2.2、设置ProGet 

设置ProGet包括创建源,设置用户,设置用户组,设置功能权限。

上面部署好后这里还需要一个license key

 

 

 

 

 

 这时ProGet也会帮把 License Key信息保存到部署的站点里面了,不需要再把key填一次了。

 

 然后登录

 

 

 

 

 

 修改完密码设置权限

 

 

 

 创建api key

 

设置权限

 

 

 

 修改完后,想查看NuGet服务器上的包就需要登录了。

创建源

要上传Nuget包,需要创建一个源,就是Nuget包的源,ProGet能够创建多个源,分别存不同的包

 

选源的种类为NuGet 

 

 

 

 

 三、Nuget包发布和下载

3.1、Nuget包打包和发布

visual studio 建一个类库,这里为了演示只写一个帮助类。

 

 右键属性填写包的信息

 

 项目右键,加包。

 

 打包成功后会在bin/debug下生成一个nuget包

 

 把NuGet包推送到NuGet服务的源上

#nuget包推送命令
dotnet nuget push wxl.tool.1.0.0.nupkg --api-key c39bf1f00893dc07123508d281305e9735xxxxxx --source http://1.15.63.120:8180/nuget/mynuget/v3/index.json

 --api-key:上面创建的用于推送的apikey

--source :上面创建的源feed

 推送完成就可以在NuGet服务器上在到这个包了,这里的时间比服务器少了一个时区8小时,是因为容器时区问题,在启动Docker时加上-v /etc/localtime:/etc/localtime:ro即可解决,前面的启动命令已经加上了。

 

3.2、NuGet包下载使用

visual studio 另起一个项目,然后右键打开Nuget管理,把NugGet的源添加进去

 

 

 

 输入账号信息后就能安装啦。

3.3、(推荐)通过NuGet.config的方式来添加源

上面3.2的方式能通过vs来添加源和NuGet包了,那有什么问题呢?

1、每个开发人员都要在自己的vs添加一遍这个NuGet源。

2、(重点)发布到服务器之后,服务器识别不到NuGet源,需要在服务器设置一下NuGet源,如果服务器很多的情况,添加修改起来会比较麻烦。

这时就可以用NuGet.config的方式来添加源了。

在项目根目录添加NuGet.config文件,内容为

 

 

 

 

 这样打开项目后,项目会自动从nuget.config加载nuget的源,就不需要从vs添加了。发布的时候项目也能从nuget.config还原所需的NuGet包,就不需要每个服务器设置NuGet源了。

到这里Nuget私有服务使用就完成了!

 

NuGet发布包命令地址:https://learn.microsoft.com/zh-cn/nuget/nuget-org/publish-a-package?source=recommendations

NuGet.confg微软官方文档地址:https://learn.microsoft.com/zh-cn/nuget/reference/nuget-config-file?cid=kerryherger

ProGet官网地址:https://proget.inedo.com/

标签:ProGet,--,nuget,NuGet,inedo,服务器,Docker
From: https://www.cnblogs.com/wei325/p/17131835.html

相关文章

  • Nexus系列---【使用docker搭建nexus3仓库】
    1.Docker搭建nexus3私服如果机器配置比较低,建议指定初始内存大小,默认2Gdockerrun-d\--restart=always\--name=nexus3\-p6081:8081\-p6000:5000\--privile......
  • Docker CLI docker run 常用命令
    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。Doc......
  • Docker安装青龙面板
    拉取青龙面板:dockerpullwhyour/qinglong:latest拉取成功之后,用代码创建容器:dockerrun-dit\--nameQingLong\--hostnameQingLong\--restartalways\......
  • Dockerfile使用技巧(尽量使用非root用户)
    在之前Linux的文章中,小编已经说明了root用户对Linux的重要性。Docker的root权限一直是其遭受诟病的地方,docker的root权限有那么危险吗?我们举个例子假如我们有个用户,叫dem......
  • docker 操作手册(二)
    端口映射#dockerrun--namewarp-p8080:8080-it-dubuntu087d0c3227c569e07a36958dae2ce08c1616576b3b7531000e220f6ec0ad9eb7#dockerpsC......
  • docker 操作手册(一)
    创建容器#dockerrun--namewarpubuntu#dockerps-aCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES75......
  • Docker的安装
    离线安装Docker系统https://blog.csdn.net/qq_44858888/article/details/124084408第一步:下载docker离线包https://download.docker.com/linux/static/stable/x86_64/do......
  • Docker 中使用Nginx网站的搭建
    Docker中使用Nginx网站的搭建使用Nginx来搭建完整的前置站点,实现后向的代理,这篇文章中简单介绍一个搭建的步骤,至于Nginx的知识,Docker的使用可以参考对应的文档。前提......
  • Docker
    一、背景二、Docker简介1、定义Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系......
  • docker push 到私有仓库提示(Client.Timeout exceeded while awaiting headers)
    如果docker在上传镜像的时候出现该问题,那么大概率是私有仓库的docker不通[root@localhostdocker]#dockerpush192.168.223.136:5000/xiaoniao:v1Thepushrefersto......