使用Docker搭建NPM私服

lxf2023-05-04 14:55:02

前言

公司前端项目越来越多,业务上的npm包也越来越多,所以想着自建一个npm私服使用。

技术选型

参考了很多的文章,最后决定选择 Verdaccio 来搭建npm私服,本文使用的是目前最新版本 Verdaccio 5.15

服务器配置

因为是在 Docker 上运行,后面需要挂载目录,所以我们得自己准备一份 config.yaml 配置文件,默认的配置文件可以从这里下载 verdaccio/docker.yaml

我在根目录创建了一个 /verdaccio文件夹,在 /verdaccio 文件夹中分别创建 confstorageplugins 文件夹,将刚刚的 config.yaml 文件复制到 /verdaccio/conf 文件夹下。

做完上述操作后需要使用如下命令修改宿主机文件夹权限,否则在后面添加用户和上传包会提示权限问题无法写入。 参考文档 Docker | Verdaccio。

sudo chown -R 10001:65533 /verdaccio

开始安装

运行 Docker 创建命令:

docker run -itd --name verdaccio -p 4873:4873 -v /verdaccio/conf:/verdaccio/conf -v /verdaccio/storage:/verdaccio/storage -v /verdaccio/plugins:/verdaccio/plugins verdaccio/verdaccio

配置域名和证书

在使用的时候我们肯定需要使用域名来访问的,并且配置好 SSL 证书。

这里我是使用 Nginx 的反向代理实现的,将 registry.example.com -> 127.0.0.1:4873,设置好证书,配置好代理,就可以访问页面了,但是页面是白屏,检查控制台发现是页面的静态资源还是使用 http 协议,导致加载错误。

解决页面白屏

Docker 安装命令中添加设置环境变量设置 VERDACCIO_PUBLIC_URL='https://registry.example.com',这里的 https://registry.example.com 是你配置好证书的域名。总的安装命令是:

docker run -itd --name verdaccio -p 4873:4873 -v /verdaccio/conf:/verdaccio/conf -v /verdaccio/storage:/verdaccio/storage -v /verdaccio/plugins:/verdaccio/plugins -e VERDACCIO_PUBLIC_URL='https://registry.example.com' verdaccio/verdaccio

使用方法

添加用户

使用 npm 的命令就可以了,默认装好是所有人都可以注册,后续可以在配置文件关闭

npm adduser --registry https://registry.example.com/

发布包

npm publish --registry https://registry.example.com/

发布成功后我们就可以在网页看到我们成功发布的包了,界面如下:

使用Docker搭建NPM私服

删除包

删除包只需要在服务器中 /verdaccio/storage/data 删除包即可。

更多操作

更多操作请查阅官方文档 Installation | Verdaccio