借助docker, 使用verdaccio搭建npm私服

news2025/2/27 12:38:15

为何要搭建npm私服

搭建npm私服好处多多,网上随便一篇教程搜出来都罗列了诸多好处,譬如:

  1. 公司内部开发环境与外网隔离,内部开发的一些库高度隐私不便外传,内网搭建npm服务保证私密性
  2. 同属内网,可以确保使用npm下载依赖快速稳定
  3. 控制npm模块质量和安全,对于下载、发布npm包有对应的权限管理
  4. 接触前端运维,拒绝当个纯页面仔,简历好装逼

方案选择

时至今日,较好的免费选择有 Nexus, Verdaccio。

本篇介绍 Verdaccio 搭建的完整流程和诸多踩坑细节,Nexus有机会再分享。

上手Verdaccio

这里默认你已经掌握了 linux, docker 的基本使用,不会也没事,我会带着你一个一个指令敲的。

也默认你有一个linux服务器已经安装好了docker,没有也没事,win10/win11也可以直接搞个docker。

以下都是在 Ubuntu 18.04.4 系统中实操

  1. 直接用docker启动 verdaccio

指令:docker run -it -d --name zwd_verdaccio -p 4873:4873 verdaccio/verdaccio

不是还没有安装 verdaccio 镜像呢么,不用慌,如上指令会先直接下载 verdaccio/verdaccio镜像

稍微解释一下指令的含义:

  • docker run 启动容器
  • --name zwd_verdaccio 这个容器名叫 zwd_verdaccio

哎嘿,没了,“稍微”。

  1. 查看当前正在运行的docker容器

指令docker ps ,加个 -a就能看到所有的

  1. 复制这个容器内的配置文件到宿主机上,这样方便修改

我看了很多很多很多的教程,都是让挨个新建文件的,当时真迷糊为啥要建这么些文件,现在真迷糊为啥要这么麻烦?

指令 docker cp zwd_verdaccio:/verdaccio /home/zwd/verdaccio 直接在本地复制生成配置文件。这个指令的意思就是把上面刚刚开启的 zwd_verdaccio里的配置文件复制到 /home/zwd/verdaccio这个路径下,也可自定义路径。

这里 linux 的文件路径和 windows 下有很大区别。

查看 /home/zwd/verdaccio

  1. 设置 verdaccio 权限

很重要的一点,指令chown -R 10001:65533 /home/zwd/docker/verdaccio 不然后期出现权限的问题

  1. 删除 zwd_verdaccio 容器

配置文件复制完成,这个容器的作用也就结束了,指令docker rm -f zwd_verdaccio

  1. 修改以下本地的配置文件

可以参考官方文档给的一个示例,够用 https://verdaccio.org/docs/configuration/

storage: ./storage
web:
  title: Verdaccio
auth:
  htpasswd:
    file: ./htpasswd
    max_users: 1000
    algorithm: md5
uplinks:
  npmjs:
    url: https://registry.npmjs.org/
  yarn:
    url: https://registry.yarnpkg.com/
packages:
  '@*/*':
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    proxy: npmjs
  '**':
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    proxy: npmjs
server:
  keepAliveTimeout: 60
listen: 0.0.0.0:4873
middlewares:
  audit:
    enabled: true
logs: { type: stdout, format: pretty, level: http }
  1. 启动一个挂载目录的verdaccio镜像

指令 docker run -it -d --name zwd_verdaccio -v /home/zwd/verdaccio/conf:/verdaccio/conf -p 4873:4873 verdaccio/verdaccio

-v 后面那句表示用本地刚刚新建的配置文件代替原本容器内配置文件。

这时在浏览器端输入你的服务器IP + 4873端口,即可看见Verdaccio界面,例如我的就是 http://106.53.143.75:4873/

需要注意的前提是,你需要给你的服务器防火墙和安全规则放开4873端口

  1. 文件目录的小改动

这时候回到/home/zwd/verdaccio/conf下会发现 新建了 storage 和 htpasswd,这是因为基于新的配置文件,那之前复制的文件目录里 plugins 和 storage 就无效了可删除。

这里还有个坑,需要给添加权限,指令chown -R 10001:65533 /home/zwd/docker/verdaccio/conf/htpasswd, 否则在 npm adduser 时会提示 500Error

如遇到提示报错,可通过指令docker logs --tail 20 zwd_verdaccio查看具体报错进行问题定位。

如上就可以搭建出一个npm私服。

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

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

相关文章

RPC技术选型

前言HTTP1.0 & HTTP1.1 & HTTP2.0 & RPCHTTP1.0无法复用连接HTTP1.0 协议时,HTTP 调用还只能是短链接调用,每次发送请求的时候,都需要进行一次TCP的连接,而TCP的连接释放过程又是比较费事的。这种无连接的特性会使得网…

金三银四跳槽季,JAVA面试撸题就来【笑小枫】微信小程序吧~

JAVA面试撸题就来【笑小枫】微信小程序啦~ 疫情已过,金三银四即将到来,小伙伴们是否有跳槽的打算呢?不管有没有,技术不能丢,让我们一起来撸题吧。 博主最近整理了一批面试题,包括JAVA基础、多线程与锁、Red…

媒体邀约电视台对商业活动选题有什么要求?如何邀请电视台报道

传媒如春雨,润物细无声,大家好随着互联网,移动互联网的快速发展,大众在电视上消磨的时间就越来越短了,但是随着新媒体的出现,传统媒体不断的跟进发展,不断打造自己的媒体矩阵,虽然离…

界面控件DevExpress WinForm——轻松构建类Visual Studio UI(一)

DevExpress WinForm拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任…

图穷了,来搞一搞(内附源码)

本章继续我们的爬虫教程,爬什么呢 ,还是斗图,娱乐性的东西,为什么要爬? 因为我图库空了,发现这个网址的图库还是很丰富的。 「注意:如下文,是封装后拆分的,所以详情参照…

Word处理控件Aspose.Words功能演示:使用 C# 在电子邮件正文中发送 Word 文档

Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外,API支持所有流行的Word处理文件…

《精通Spring4.x 企业应用开发实战》第12章 Spring 的事务管理难点剖析

目录标题前言一、DAO 和事务管理的牵绊二、应用分层的迷惑三、事务方法嵌套调用的迷茫(事务传播行为)1.Spring 事务传播机制回顾2.相互嵌套的服务方法四、多线程的困惑1. Spring 通过单实例化 Bean 简化多线程问题2.启动独立线程调用事务方法五、联合军种作战的混乱1.Spring 事…

用了 ChatGPT 后,我迫不及待的问了它这 10 个问题

前言20230208 日,ChatGPT 已经联手微软登录必应搜索引擎,谷歌、百度等巨头更是紧随其后着急麻慌的推出自己的 AI 聊天产品,有理由相信,传统搜索引擎时代已经结束,不远的未来,每个人家里都会有一个可以陪你聊…

数字芯片是怎样设计出来的?

芯片在我们的生活和工作中无处不在。例如,交通智能卡就嵌入了一颗带有微处理器、储存单元、芯片操作系统的芯片;而手机的主板则集成了数百颗芯片,有的负责无线电收发、有的负责功率放大、还有的负责存储照片和文件、处理音频,完成…

如何查找专用 IP 地址?

专用 IP 地址:这些地址在网络内部使用,例如,平板电脑、Wi-Fi 相机、无线打印机和台式电脑使用的家庭网络。这些类型的 IP 地址为设备提供了一种与路由器和专用家庭网络上的其他设备进行通信的方法。私有IP地址可以手动设置,也可以…

Mr. Cappuccino的第40杯咖啡——Kubernetes之Pod生命周期

Kubernetes之Pod生命周期Pod生命周期官方文档Pod的状态初始化容器案例钩子函数Exec命令TCPSocketHTTPGet案例容器探测Exec命令TCPSocketHTTPGet探测时间重启策略Pod生命周期官方文档 Pod生命周期官方文档 Pod的状态 pending:挂起,apiserver创建了pod资…

2月第2周榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!

飞瓜轻数发布2023年2月6日-2月12日飞瓜数据UP主排行榜(B站平台),通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况,为用户提供B站号综合价值的数据参考,根据UP主成长情况用户能够快速找到运营能力强的B站…

python基于django+vue微信小程序的校园跑腿平台

随着计算机技术的高速发展,现代计算机系统已经从以计算为中心向以信息化处理为中心的方向发展。而校园跑腿服务系统,不仅需要在硬件上为现代社会的学生们提供一个学习知识,获取知识的环境,更要在软件上为愿意上课的人提供必要的便利。于是校园跑腿服务系统系统便应运而生。 目前…

企业与第三方供应商合作时,会存在哪些安全风险?

随着现代社会的发展,企业供应链、产业供应链已日渐成熟。其中,供应商与企业的关系也由最初的纯粹买卖关系发展成了合作伙伴关系。在整个供应链体系中,供应商与其受众承担着供应链中环环相扣的责任,可以说,企业安全的薄…

站在行业C位,谷医堂打开健康管理服务新思路

对于农村及贫困地区老百姓来说,由于交通因素和家庭经济条件制约,看病难致身体调理情况一直不太乐观,这也导致心理压力很大。然而,随着近年中医药产业崛起与快速发展,这种局面很快就会得到改观,以湖南谷医堂…

MySQL InnoDB表的碎片量化和整理(data free能否用来衡量碎片?)

网络上有很多MySQL表碎片整理的问题,大多数是通过demo一个表然后参考data free来进行碎片整理,这种方式对myisam引擎或者其他引擎可能有效(本人没有做详细的测试).对Innodb引擎是不是准确的,或者data free是不是可以参…

让逆向工程师们头疼的代码混淆,就像永远也走不出的“浪浪山”

目录 代码混淆究竟是什么? 如何做代码混淆? 代码混淆不等于加密 App 加固非一时之功 “我想离开浪浪山。” 在数次尝试破解某个App 时,某个逆向工程师无奈感慨道。 逆向工程师顾名思义就是把一个个完整的软件逆推,还原成一段段…

【MySQL】数据库操作

文章目录1、创建和管理数据库1.1 创建数据库1.2 查看数据库1.3 修改数据库1.4 删除数据库2、 创建表2.1 创建表CREATE2.2 创建表AS3、修改表3.1 添加列 ALTERT TABLE ADD3.2 修改列 ALTER TABLE MODIFY3.3 重命名列 ALTER TABLE CHANGE3.4 删除列 ALTER TABLE DROP4、重命名表 …

一文讲透丨如何破解安全应用容器架构的17大挑战!

众所皆知,云计算/云原生技术因能极大地提高云上资源利用率以及应用交付效率而被广泛采用。然而,云计算/云原生技术的发展也让用户遭受了更多高级威胁与攻击。如何构建有效的云原生安全管理体系应对层出不穷的安全威胁这一问题也一直受到千行百业用户的关…

Keras深度学习实战——使用深度Q学习进行SpaceInvaders游戏

Keras深度学习实战——使用深度Q学习进行SpaceInvaders游戏 0. 前言1. 问题与模型分析2. 使用深度 Q 学习进行 SpaceInvaders 游戏相关链接0. 前言 在《深度Q学习算法详解》一节中,我们使用了深度 Q 学习来进行 Cart-Pole 游戏。在本节中,我们将利用深度Q学习来玩“太空侵略…