Verdaccio私服搭建

前言

Verdaccio是一个轻量级的私有npm注册表,由Node.js创建,并且是sinopia@1.4.0的衍生版本,与其100%向后兼容。Verdaccio的名称来源于意大利中世纪晚期fresco绘画中流行的一种绿色。
Verdaccio的主要功能是在本地环境中管理和共享npm软件包。它可以在本地机器上搭建一个私有的npm注册表,用于存储和分发自己的npm包或来自公共npm注册表(如npmjs)的软件包。它的工作原理可以简单地概括为,作为一个中间层位于npm客户端和真实的npm注册表之间。
Verdaccio有一个内置的数据库来存放所有的npm包,除此之外它还有一套默认的鉴权机制:htpasswdhtpasswd鉴权是通过htpasswd文件来存放所有的npm用户,鉴权、添加/删除的时候通过对文件的读写来实现。此外,Verdaccio还提供了强大的身份认证系统。

步骤

拉取verdaccio镜像

docker pull verdaccio/verdaccio

启动verdaccio容器

docker run -it --rm --name verdaccio -p 4873:4873 verdaccio/verdaccio

复制config.yaml到宿主主机

docker cp verdaccio:verdaccio/conf /opt/verdaccio/conf/

修改config.yaml配置

#我们可以联系的其他已知存储库列表
uplinks:npmjs:url: https://registry.npmjs.org/
packages:'ve-**':# scoped packagesaccess: $authenticated #可以访问的用户,$authenticated授权后的,@all表示所有用户(包括未授权的),还可以指定用户,例如:zhangsan lisipublish: liuhuiwen #可以发布的用户,格式同access一样unpublish: liuhuiwen #可以取消发布的用户,格式同access一样proxy: npmjs # 代理地址
# 通过https域名访问,则需要配置下面的证书
https:key: /verdaccio/conf/npm.liulingfengyu.cn.keycert: /verdaccio/conf/npm.liulingfengyu.cn.pem
i18n:web: zh-CN # 汉化

创建htpasswd文件

该文件对应config.yaml中配置的htpasswd地址

修改宿主主机verdaccio文件夹的权限为777

发布时会出现权限问题,这里提前设置

sudo chmod -R 777 /opt/verdaccio

持久化启动容器

删除之前启动的容器,改为持久化启动,并且通过https访问

docker run -it -d --name verdaccio -p 4873:4873 -e VERDACCIO_PROTOCOL=https -v /opt/verdaccio/storage:/verdaccio/storage -v /opt/verdaccio/conf:/verdaccio/conf -v /opt/verdaccio/plugins:/verdaccio/plugins verdaccio/verdaccio

配置nginx代理地址

server {listen 443 ssl;server_name custom.cn; # 改为自己的域名root html;index index.html index.htm;# 配置证书ssl_certificate /usr/share/nginx/html/cert/custom.cn.pem;ssl_certificate_key /usr/share/nginx/html/cert/custom.cn.key;ssl_session_timeout 5m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;ssl_prefer_server_ciphers on;location / {# 转发地址(这里必须写https)proxy_pass https://127.0.0.1:4873;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

启动nginx

docker run --name nginx-test -p 8080:80 -d nginx 

总结

完成上述步骤我们就完成了Verdaccio的搭建,下面是展示效果
image.png


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1425003.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙应用开发之调用C++开发代码库3

接着下来,我们仔细分析C++代码的实现,要理解怎么样把ArkTS类型转换为C++类型,并且返回参数值时,怎么从C++的类型转换为ArkTS类型。 要想在ArkTS调用C++的代码,需要把上面的编译器信息打包到应用程序HAP里,当运行的时候,就可以找到加载的对应的声明信息。 我们从JS调用框…

framework ‘CoreAudioTypes‘ not found

几天前我升级Xcode15之后遇到了这个问题。关于“CoreAudioTypes”的信息完全是误导。在我的例子中,原因是在删除一些旧代码时,我不小心删除了仍然需要的类。然而,在构建时弹出的唯一消息是关于“CoreAudioTypes”——当我恢复丢失的类时&…

基于区块链的Web 3.0关键技术研讨会顺利召开

基于区块链的Web3.0关键技术研讨会 2024年4月23日,由国家区块链技术创新中心主办的“基于区块链的web3.0关键技术研讨会”召开。Web3.0被用来描述一个运行在“区块链”技术之上的“去中心化”的互联网,该网络上的主体掌握自己数据所有权和使用权&#xf…

使用OpenCV GUI清理数据集 | 为目标检测模型创建更好的数据集

点击下方卡片,关注“小白玩转Python”公众号 在深度学习中有几件重要的事情,我认为数据是最关键的。如果没有合适的数据,要取得好的结果是非常困难的。即使你用强大的预训练模型和GPU训练模型,你的模型也可能表现不佳。在本文中&a…

Kotlin核心编程知识点-02-面向对象

文章目录 1.类和构造方法1.1.Kotlin 中的类及接口1.1.1.Kotlin 中的类1.1.2.可带有属性和默认方法的接口 1.2.更简洁地构造类的对象1.2.1.构造方法默认参数1.2.2.init 语句块1.2.3.延迟初始化:by lazy 和 lateinit 1.3.主从构造方法 2.不同的访问控制原则2.1.限制修…

Apifox接口报错401,msg:“未授权”

Apifox接口报错401,msg:“未授权” 报错: 原因:Apifox接口好像两小时token就过期了,得重新获取 一、打开登录接口,找到token 二、打开根目录找到token,将登录的token值拷贝过来,点击保存 三…

Milvus的系统架构

简介 Milvus的构建在许多知名的向量搜索库比如Faiss, HNSW, DiskANN, SCANN等之上的,它针对稠密向量数据集的相似搜索而设计,能支持百万、十亿甚至万亿级别的向量搜索。 Milvus支持数据分片,流式数据插入,动态schema&#xff0c…

JVM运行时内存:虚拟机栈

文章目录 1. 概述2. 栈针3. 栈针内部结构3.1 局部变量表3.2 操作数栈3.3 动态链接3.4 方法返回地址3.5 一些附加信息 运行时内存整体结构如下图所示: 1. 概述 如何理解栈管运行,堆管存储? 角度一:GC;OOM角度二:栈、堆执行效率角…

电子合同怎么盖章的

数字证书盖章:利用个人或企业的数字证书进行盖章。数字证书作为数字身份证明,确保了电子签名和盖章的可信度。通过加密技术,确保合同内容不被篡改,盖章过程完成后,合同具有法律效力。 时间戳盖章:在电子合…

STM32 HAL TM1638读取24个按键

本文分享一下天微电子的另一款数码管按键驱动芯片TM1638的单片机C语言驱动程序。 笔者采用的MCU是STM32单片机,STM32CubeMX Keil5开发,使用了HAL库。 一、TM1638介绍 1、基础信息 TM1638属于一款LED驱动控制专用电路,其特性如下&#xf…

析构函数详解

目录 析构函数概念特性对象的销毁顺序 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒🐒 个人主页 🥸🥸🥸 C语言 🐿️🐿️🐿️ C语言例题 &…

两步将 CentOS 6.0 原地升级并迁移至 RHEL 7.9

《OpenShift / RHEL / DevSecOps 汇总目录》 说明 本文介绍如何将一个 CentOS 6.0 的系统升级并转换迁移到 RHEL 7.9。 本文是《在离线环境中将 CentOS 7.X 原地升级并迁移至 RHEL 7.9》阶进篇。 所有被测软件的验证操作可参见上述前文中对应章节的说明。 准备 CentOS 6.…

语言模型测试系列【8】

语言模型 文心一言星火认知大模型通义千问豆包360智脑百川大模型腾讯混元助手Kimi Chat商量C知道 这次的测试比较有针对性,是在使用钉钉新推出的AI助理功能之后发现的问题,即创建AI助理绑定自己钉钉的知识库进行问答,其中对于表结构的文档学…

【echart】实现echart图的富文本样式

贴源码 let xData [山西,山东,内蒙,甘肃];let averData [2, 3,1, 3];var eicon path://M480.55,252.18L318.88,498.04c-15.95,24.25,1.08,56.57,30.11,57.12l147,2.79L448.5,696.92c-14.74,43.15,39.88,75.83,70.93,42.44l216.73-233.04c21.93-23.58,5.21-61.98-27-61.98H56…

【面试干货】 两个有序数组的合并排序

【面试干货】 两个有序数组的合并排序 1、实现思想2、代码实现 💖The Begin💖点点关注,收藏不迷路💖 1、实现思想 使用两个指针分别指向两个数组的起始位置,然后逐个比较两个指针所指向的元素,将较小的元素…

【IoTDB 线上小课 03】时序数据库 VS 实时数据库,区别是?

好评满满的【IoTDB 视频小课】系列又来了~ 关于 IoTDB,关于物联网,关于时序数据库,关于开源... 你想学习的重点,给我们 3-5 分钟,清晰地讲给你听: 时序数据库 VS 实时数据库 工业数字化转型愈发受到重视的当…

OpenAI 发布 GPT-4o,再次巩固行业地位!

5 月 14 日凌晨 1 点(太平洋时间上午 10 点),OpenAI 发布了其最新的 GPT-4o,再次巩固了其在人工智能领域的领导地位。这次发布不仅仅是一个产品的推出,更是向世界宣告 AI 技术已迈入一个全新的纪元。OpenAI 的 CEO 萨姆…

本机搭建RabbitMQ

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、下载安装包,搭建过程 二、重要概念介绍 三、创建用户 方式一:命令行 方式二:管理后台 3.1 创建用户 3.2 分配权限 3.3 提…

小程序|锁定查询功能如何使用?

学生或家长想要实现自己查询完成后,任何人都无法再次查询,老师应该如何设置?易查分的【锁定查询功能】就可实现,下面教大家如何使用吧。 📌使用教程 🔒锁定查询功能介绍 ✅学生或家长自主锁定:开…

【SQL】SQL常见面试题总结(1)

目录 1、检索数据1.1、从 Customers 表中检索所有的 ID1.2、检索并列出已订购产品的清单1.2、检索所有列 2、排序检索数据2.1、检索顾客名称并且排序2.2、对顾客 ID 和日期排序2.3、按照数量和价格排序2.4、检查 SQL 语句 3、过滤数据3.1、返回固定价格的产品3.2、返回产品并且…