verdaccio + docker搭建私有npm仓库(有手就行)

一、环境准备

docker

二、步骤

运行verdaccio

docker run -d --name verdaccio -p 4873:4873 --restart=always verdaccio/verdaccio

该命令执行完,一个本地的npm仓库就基本搭建好了,可以浏览器访问http://localhost:4873/ 查看,效果如下:
在这里插入图片描述
效果出是出来了,但是

docker run -d --name verdaccio -p 4873:4873 --restart=always verdaccio/verdaccio

这个命令还存在一些问题,就是没有挂载卷,当该容器销毁时,里面的数据也没了

为了避免以上情况,保证容器销毁时,数据还在,做法如下

使用docker cp命令将容器中的内容复制到宿主机,例如将容器中/verdaccio目录复制到宿主机D:\volumes\verdaccio目录

docker cp verdaccio:/verdaccio D:\volumes\verdaccio

进入D:\volumes\verdaccio可以看到conf、plugins、storage三个目录
在这里插入图片描述
进入conf目录里有一个conf.yaml文件,这是verdaccio的配置文件,我们需要修改这个文件中的几个路径确保卷挂载后不会出问题

一个是storage的路径,默认值是/verdaccio/storage/data,但个路径在容器内是没有问题的,但由于我们将verdaccio文件夹拷贝到了宿主机,因此这个路径就有问题了,需要改成…/storage/data
同理:plugins的路径需要改成…/plugins
在这里插入图片描述

还有一个file路径需要改成…/storage/htpasswd(htpasswd是存放用户名和密码的文件)
在这里插入图片描述
接着,便可以使用挂载卷的方式启动verdaccio容器

1.删除原来的verdaccio容器

docker rm verdaccio -f

2.使用挂载卷的方式启动verdaccio容器

docker run -d --name verdaccio -v D:\volumes\verdaccio\storage:/verdaccio/storage -v D:\volumes\verdaccio\conf:/verdaccio/conf -v D:\volumes\verdaccio\plugins:/verdaccio/plugins -p 4873:4873 --restart=always verdaccio/verdaccio

大功告成

接着,可以注册一个用户来发布npm包了

1.注册用户
使用npm adduser命令然后输入用户名,密码,邮箱就能注册用户
2.切换镜像源
例如借助nrm换源
a.首先添加源
nrm add <registry> <url>
例如:nrm add localhost http://localhost:4873
b.然后切换:
nrm use <registry>
例如:nrm use localhost
4.发布npm包
npm publish
5.可以访问http://localhost:4873/ 登录后查看自己发布的包
在这里插入图片描述

### npm私有仓库的配置与使用 #### 一、搭建npm私有仓库的方式 可以采用多种方式来搭建npm私有仓库,以下是几种常见的方法及其特点: 1. **Verdaccio** Verdaccio 是一种轻量级的 npm 私有仓库解决方案,适合中小型团队使用。通过简单的安装和配置即可快速部署到公司内网环境[^1]。其主要优势在于无需复杂的权限管理配置。 2. **Nexus Repository Manager** Nexus 提供更强大的功能支持,适用于大型企业场景下的复杂需求。它不仅能够代理公共 npm 仓库,还允许创建多个分组型或托管型存储库,并提供细粒度的身份验证机制[^5]。 3. **Docker容器化方案** 如果希望简化部署流程,则可以选择基于 Docker 的方式运 verdaccio 或其他类似的工具。这种方式便于维护版本控制以及跨平台迁移[^3]。 #### 二、具体实施步骤说明 ##### (一)利用 Verdaicio 构建本地服务端实例 - 下载并启动 Verdaccio 应用程序; - 修改默认配置文件 `config.yaml` 来指定监听 IP 和端口号等参数; - 访问 Web UI 页面完成初步初始化工作; ##### (二)客户端连接至自定义源地址 对于开发者机器而言,需执如下命令以便顺利上传下载包资源: ```bash # 安装 nrm 工具用于便捷切换不同注册表 npm install -g nrm # 添加新的远程源记录 nrm add private-source http://your-verdaccio-server-address:port/ # 查看现有选项列表确认新增成功与否 nrm ls # 正式启用目标私有源作为当前活动项 nrm use private-source ``` ##### (三)发布新模块至内部网络中的私有仓库存储位置 当准备就绪之后,按照常规流程推送代码即刻生效: ```bash npm publish --registry=http://your-private-repo-url/ ``` 另外,在某些特定情况下可能还需要额外调整 `.npmrc` 文件内容以适配特殊的安全策略或者路径映射关系[^4]。 #### 三、注意事项 - 确保所有参与者都能够正常访问所设定的服务节点; - 对敏感数据采取必要的加密保护措施防止泄露风险发生; - 根据实际业务规模评估选用合适的技术栈组合形式; ```python import os from dotenv import load_dotenv load_dotenv() PRIVATE_REPO_URL = os.getenv('PRIVATE_NPM_REGISTRY') def publish_package(package_name, version): command = f"npm publish {package_name}@{version} --registry={PRIVATE_REPO_URL}" result = os.system(command) if result != 0: raise Exception(f"Failed to publish package {package_name}") publish_package("example-package", "1.0.0") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值