verdaccio搭建

说明

目前使用verdaccio做为前端npm私服,保存一些项目私有的前端组件,npm私库目前和nexus仓库部署在同一台ECS,目前设置IP为10.100.10.100

 一、安装过程

###verdaccio使用docker-compose的方式,官方镜像一键搭建
[root@zhgd-jumpserver-prod verdaccio]# cat docker-compose.yml 
version: "3.0"
services:
  verdaccio:
    container_name: zhgd-verdaccio
    image: "verdaccio/verdaccio"
    ports:
      - "4873:4873"
    environment:
      VERDACCIO_PUBLIC_URL: 'https://zhgd-npm.xingshicloud.com'
    volumes:
      - "./storage:/verdaccio/storage"
      - "./conf/config.yaml:/verdaccio/conf/config.yaml"
    restart: "always"
    
###一键启动    
[root@zhgd-jumpserver-prod verdaccio]# docker-compose up -d

二、基本设置

###挂载的配置文件如下
[root@zhgd-jumpserver-prod verdaccio]# cat conf/config.yaml
storage: /verdaccio/storage/data

plugins: /verdaccio/plugins

web:

  title: Verdaccio


auth:
  htpasswd:
    file: /verdaccio/storage/htpasswd
###这里现在写成不允许新注册用户了,zhgd这个用户是在没有这个配置的情况下先注册的
    max_users: -1

###配置代理仓库地址  
uplinks:
  npmjs:
    url: https://registry.npmjs.org/
  taobao:
    url: https://registry.npmmirror.com/

packages:
  '@*/*':
    # scoped packages
    access: $authenticated
    publish: $authenticated
    unpublish: $authenticated
    proxy: taobao npmjs

  '**':
    # allow all users (including non-authenticated users) to read and
    # publish all packages
    #
    # you can specify usernames/groupnames (depending on your auth plugin)
    # and three keywords: "$all", "$anonymous", "$authenticated"
    access: $authenticated

    # allow all known users to publish/publish packages
    # (anyone can register by default, remember?)
    publish: $authenticated
    unpublish: $authenticated

    # if package is not available locally, proxy requests to 'npmjs' registry
    proxy: taobao

server:
  keepAliveTimeout: 60

middlewares:
  audit:
    enabled: true

三、本地开发适配

        verdaccio仓库目前没有集成LDAP或者gitlab的账号认证系统,故也是所有开发者使用同一个“zhgd”账号的认证方式

###本地开发者如需使用此私库,需要先添加并登陆
[root@8-70-nginx ~]# nrm add zhgd https://zhgd-npm.xingshicloud.com

    add registry zhgd success

[root@8-70-nginx ~]# nrm ls

  npm ---------- https://registry.npmjs.org/
  yarn --------- https://registry.yarnpkg.com/
  tencent ------ https://mirrors.cloud.tencent.com/npm/
  cnpm --------- https://r.cnpmjs.org/
  taobao ------- https://registry.npmmirror.com/
  npmMirror ---- https://skimdb.npmjs.com/registry/
  pmcnpm ------- http://172.16.9.19:7001/
* pm ----------- http://172.16.9.19:4873/
  zhgd --------- https://zhgd-npm.xingshicloud.com/
 
[root@8-70-nginx ~]# nrm use zhgd
                        

   Registry has been set to: https://zhgd-npm.xingshicloud.com/

[root@8-70-nginx ~]# npm login
Username: zhgd
Password: 
Email: (this IS public) test@163.com
Logged in as zhgd on https://zhgd-npm.xingshicloud.com/.

四、npm仓库备份

###参照nexus仓库的方式,npm仓库也用rsync脚本进行了备份,完整脚本如下
[root@zhgd-mysql-cloudcanal-kubepi-prod ~]# crontab -l
00 02 * * * /bin/bash /k8slog/10.100.10.206/npm_backup/rsync_npm.sh
30 02 * * * /bin/bash /k8slog/10.100.10.206/nexus_backup/rsync_nexus.sh
[root@zhgd-mysql-cloudcanal-kubepi-prod ~]# cat /k8slog/10.100.10.206/npm_backup/rsync_npm.sh
#!/bin/bash
remote_ip=10.100.10.206
rsync_user=opshaibo
rsync_dir=/k8slog/$remote_ip/npm_backup/verdaccio
DATE=`date +%Y%m%d%H%M%S`
LogFile=/k8slog/$remote_ip/npm_backup/npmbackup.log

echo -e "\033[36m ---------------------开始备份 $DATE -----------------\033[0m">>$LogFile
#备份命令如下:
##--delete删除目标目录比源目录中多的文件
rsync -avzu --delete --progress rsync://${rsync_user}@${remote_ip}/npmdata ${rsync_dir} --password-file=/etc/rsync_client.pas

if [ $? -eq 0 ]; 
        then
                echo -e " \033[32m 三局私有npm仓库 rsync备份成功\033[0m">>$LogFile
                #企业微信报警
                curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=126acc51-3bd8-421d-ae1c-19bfdbff70e2' \
                -H 'Content-Type: application/json' \
                -d '
                {
                        "msgtype": "markdown",
                        "markdown": {
                                "content": "<font color=\"warning\">三局私有npm仓库 rsync备份成功</font>"
                        }
                }'           
        else
                echo -e "\033[31m  三局私有npm仓库 rsync备份失败\033[0m">>$LogFile
                #企业微信报警
                curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=126acc51-3bd8-421d-ae1c-19bfdbff70e2' \
                -H 'Content-Type: application/json' \
                -d '
                {
                        "msgtype": "markdown",
                        "markdown": {
                                "content": "<font color=\"warning\">三局私有npm仓库 rsync备份失败,请快速解决问题!!</font>"
                        }
                }'
fi

now_time=`date +%Y%m%d%H%M%S`
tar -czPf npm-${now_time}.tar.gz /k8slog/$remote_ip/npm_backup/verdaccio
mv npm-${now_time}.tar.gz /k8slog/$remote_ip/npm_backup/tar/
find /k8slog/$remote_ip/npm_backup/tar -name "*.tar.gz" -mtime +7 -exec rm -f {} \;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值