使用nexus搭建npm本地私人仓库

·  阅读 2870

背景

NPM上为我们提供了许多官方安装包,我们可以从npmjs中上传或者下载npm安装包,但是:

  • 由于网络的限制,会导致npm包的上传和下载速度较慢;
  • 生产使用的npm包中包含了许多隐私信息,若放到NPM仓库上容易被外部人员获取。

技术选型

  • cnpm
  • verdaccio
  • sinopia
  • nexus (本案例选择该技术)

nexus优点

  • 支持多种类型的仓库,如:Docker、Npm、Nuget等
  • 集成LDAP
  • 支持权限管理
  • 支持Webhook

环境

  • docker && docker-compose
  • 10.0.95.63 主机(暂时使用个人电脑作为私人镜像仓库服务器)
  • 安装Docker,通过Docker镜像安装
  • 端口映射:
外部端口映射端口仓库类型描述
55658081group后台访问主端口;同时是安装依赖的主端口,包含下面两种类型的仓库
55678082hosted私有仓库,内部开发上传的仓库,不对外暴露
55668083proxy代理仓库,即第三方仓库,如taobao

搭建私人仓库

  1. 拉取nexus官方docker镜像

    docker pull sonatype/nexus3  # 官方镜像
    docekr pull 10.0.95.63:5566/nexus # 本地镜像
    复制代码
  2. 创建docker-compose.yml文件

    sudo mkdir nexus && cd nexus
    sudo vim docker-compose.yml
    复制代码

    将下面的代码复制到docker-compose.yml文件中

    version: "3.7"
    
    services:
      nexus:
        image: sonatype/nexus3  # 或者为10.0.95.63:5566/nexus
        ports:
          - "5565:8081"			# 后台访问主端口,同时也是group仓库的访问端口
          - "5567:8082"			# 代理仓库端口,即第三方仓库,如taobao
          - "5566:8083"			# 私有仓库端口,内部开发上传的仓库,不对外暴露
        restart: always
        container_name: "nexus" # 容器名称
        volumes:
          - "/media/mes/file2/nexus3:/nexus-data" # 将/nexus-data挂载本地的/media/mes/file2/nexus3
    复制代码

    运行容器:

    docker-compose up -d
    复制代码
  3. 在浏览器中打开路径http://10.0.95.63:5565,若能打开以下界面,则代表配置成功

    Image1

    然后点击Sign in进行登录,首次登录时,账号为admin,密码自动生成在/media/mes/file2/nexus3/admin.password文件中

    cat /media/mes/file2/nexus3/admin.password
    复制代码

    将密码输入到登录框中即可

  4. 点击Configuration--Repositories--Create repository创建仓库

    image-20201228185722283

    分别创建以下三种类型的仓库

    image-20201228190051969

  5. 创建hosted类型的仓库,选择npm(hosted),输入仓库名称npm-hosted,然后点击Create repository创建仓库;

    image-20201228190256619

  6. 创建proxy类型的仓库,选择npm(proxy),输入仓库名称npm-taobao,输入代理地址https://registry.npm.taobao.org/

    image-20201228190558469

    勾选Auto blocking enabled,将Maximum component age修改为-1,将Maximum metadata age修改为30,然后点击Create repository创建仓库;

    image-20201228190839807

  7. 创建group类型仓库,选择npm(group),输入仓库名称npm-group,然后将上面创建的仓库移到Members中,然后点击Create repository创建仓库;

    image-20201228191734722

  8. 创建完成后,如下图

    image-20201228191929376

  9. 验证

    # 方法一:
    npm config set registry http://10.0.95.63:5565/repository/npm-group/ # 点Copy即可获取该地址
    npm login --registry=http://10.0.95.63:5565/repository/npm-group/ # 依次输入账号密码以及邮箱
    npm init -y # 创建一个新目录并进行初始化
    npm install koa # 验证是否能从仓库中获取包
    
    # 方法二:使用nrm,便于管理npm镜像源
    npm install -g nrm # 安装nrm
    nrm ls # 查看可选的镜像源
    nrm add nexus http://10.0.95.63:5565/repository/npm-group/ # 添加镜像源
    nrm set-auth -u mes -p Mes_2020 nexus # 设置访问权限
    nrm set-email nexus mes@domain.cn # 设置邮箱
    nrm use nexus # 使用本地镜像源
    npm init -y # 创建一个新目录并进行初始化
    npm install koa # 验证是否能从仓库中获取包
    复制代码
  10. 若登录报错:Unable to authenticate, need: BASIC realm="SOnatype nexus Repository Manager",

    image-20201228201107271

    解决方案:

    1. 选择Security下的Realms,将npm Bearer Token RealmAvailable移到Active

    image-20201228201301556

分类:
前端
标签:
收藏成功!
已添加到「」, 点击更改