首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
NuGet私有服务器ProGet Docker搭建和公司中实战用法 ...
返回列表
发新帖
NuGet私有服务器ProGet Docker搭建和公司中实战用法
[复制链接]
发表于 2023-2-20 10:05:17
|
显示全部楼层
|
阅读模式
一、什么时候需要用到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/
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
回复
使用道具
举报
返回列表
浏览过的版块
鸿蒙
.Net
耶耶耶耶耶
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表