前言
Verdaccio
是一个轻量级的私有npm注册表,由Node.js创建,并且是sinopia@1.4.0
的衍生版本,与其100%向后兼容。Verdaccio
的名称来源于意大利中世纪晚期fresco绘画中流行的一种绿色。
Verdaccio的主要功能是在本地环境中管理和共享npm
软件包。它可以在本地机器上搭建一个私有的npm注册表,用于存储和分发自己的npm
包或来自公共npm注册表(如npmjs
)的软件包。它的工作原理可以简单地概括为,作为一个中间层位于npm客户端和真实的npm注册表之间。
Verdaccio
有一个内置的数据库来存放所有的npm包,除此之外它还有一套默认的鉴权机制:htpasswd
。htpasswd
鉴权是通过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
的搭建,下面是展示效果