前言
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 packages
    access: $authenticated #可以访问的用户,$authenticated授权后的,@all表示所有用户(包括未授权的),还可以指定用户,例如:zhangsan lisi
    publish: liuhuiwen #可以发布的用户,格式同access一样
    unpublish: liuhuiwen #可以取消发布的用户,格式同access一样
    proxy: npmjs # 代理地址
# 通过https域名访问,则需要配置下面的证书
https:
  key: /verdaccio/conf/npm.liulingfengyu.cn.key
  cert: /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的搭建,下面是展示效果
 
 
                


















