使用 docker + verdaccio 搭建npm私有仓库

  • A+
所属分类:Web前端
摘要

本文介绍如何使用 verdaccio 搭建私有npm仓库,以及使用 docker 时如何映射到本地目录,方便简单对仓库进行各种操作。系统环境是 Linux。

本文介绍如何使用 verdaccio 搭建私有npm仓库,以及使用 docker 时如何映射到本地目录,方便简单对仓库进行各种操作。系统环境是 Linux

verdaccio

verdaccio 是一个开源的轻量的私有 npm proxy registry (npm 代理资源库),安装使用都非常方便。
forked自 [email protected]

安装

使用 npm / yarn 进行全局安装

  • Node.js v12+

  • npm 4.x+ 或yarn

  • 全局安装

    npm install -g verdaccio  yarn global add verdaccio 
  • 启动

    verdaccio  或者使用 pm2 start verdaccio 

    使用浏览器访问web服务,端口号4873,http://0.0.0.0:4873,访问成功就可以了。

使用 docker 镜像安装

  • 安装 docker,略

  • docker 下安装 verdaccio 镜像
    使用如下命令即可:

    docker pull verdaccio/verdaccio 

    安装镜像成功:
    使用 docker + verdaccio 搭建npm私有仓库

  • 运行 verdaccio,使用 docker 命令运行镜像,创建 verdaccio 容器

    // 名称verdaccio, 端口 4873 docker run -it --name verdaccio -p 4873:4873 verdaccio/verdaccio 

    启动容器成功:
    使用 docker + verdaccio 搭建npm私有仓库
    启动成功以后,实际上就可以在浏览器访问了,http://0.0.0.0:4873
    接下来先介绍几个操作容器的 docker 命令。

  • docker 操作容器的部分命令

    新建并启动:docker run CONTAINER
    启动停止的容器:docker start CONTAINER_ID
    查看容器:docker container ls (docker ps)
    停止容器:docker stop CONTAINER_ID
    删除容器:docker rm CONTAINER_ID

  • 映射本地目录

    首先,创建 /home/verdaccio 目录,以下在该目录下操作。
    其次,创建 conf 目录,并添加 verdaccioconfig.yaml 配置文件。
    接着处理映射目录,一般有以下两种方式:

    1. 直接映射本地目录,启动 verdaccio

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

      -v:容器目录映射到本地目录

    2. 或者使用 docker-compose 启动
      添加 docker-compose.yml 文件,使用 docker-compose up 命令启动

      version: '3' services:   verdaccio:     image: verdaccio/verdaccio     container_name: "verdaccio"     network--mode: "bridge"     environment:       - VERDACCIO_PORT=4873     ports:       - "4873:4873"     volumes:       - "/home/verdaccio/storage:/verdaccio/storage"       - "/home/verdaccio/conf:/verdaccio/conf"       - "/home/verdaccio/plugins:/verdaccio/plugins"     network_mode: "bridge" 

    注意: 本地目录 /home/verdaccio/storage 需要设置权限,不然会因为权限问题而导致操作失败。

    chown -R 10001:65533 /home/verdaccio/storage 

    本地目录映射成功后,会简化很多操作,比如:
    /home/verdaccio 目录下会创建 storage 目录,如果发布了包,则在此目录下的 data 中能找到对应的包文件夹,可以查看所有上传的npm包,此处也可以直接删除该包
    也会在 conf 映射到配置文件,方便我们需要时修改配置信息。

  • 拷贝 verdaccio 配置文件

    如果不想做本地目录映射,也可以使用如下命令,拷贝出 verdaccio 镜像的配置文件。
    docker cp:在容器和本地文件系统之间,拷贝文件或文件夹。

    docker cp verdaccio:/verdaccio/conf/config.yaml /home 

私有库部署成功

verdaccio 安装启动成功后,就可以直接网络访问。
当页面出现下图所示,就表示私有库搭建成功,后续就可以进行私有包的发布下载。
使用 docker + verdaccio 搭建npm私有仓库

发布一个包

有了私有库以后,就可以在其上发布 npm 包。
但初始化时需要先添加用户,设置用户名和密码等,然后就可以直接发包了。

  • 添加用户

    npm adduser --registry http://0.0.0.0:4873/ 

    输入用户名、密码和邮箱。

  • publish

    当需要把某个项目发布到私有库时,直接 publish

    npm publish --registry http://0.0.0.0:4873/ 

    发布成功后,刷新页面,就能看到最新发布的包。

install

在项目目录下增加 .npmrc 文件,指定仓库地址。

registry=http://0.0.0.0:4873/ 

使用 npm install 包名,即可安装私有包了。

verdaccio 配置文件解读

常用配置如下:

  # 素有包的保存路径   storage: /verdaccio/storage/data   # 插件的保存路径   plugins: /verdaccio/plugins    # 通过web访问   web:     title: Verdaccio    # 账号密码文件,初始不存在   auth:     htpasswd:       file: /verdaccio/storage/htpasswd       # max_users:1000       # 默认1000,允许用户注册数量。为-1时,不能通过 npm adduser 注册,此时可以直接修改 file 文件添加用户。    # 本地不存在时,读取仓库的地址   uplinks:     npmjs:       url: https://registry.npmjs.org    # 对包的访问操作权限,可以匹配某个具体项目,也可以通配   # access 访问下载;publish 发布;unpublish 取消发布;   # proxy 对应着uplinks名称,本地不存在,去unplinks里取    # $all 表示所有人都可以执行该操作   # $authenticated 已注册账户可操作   # $anonymous 匿名用户可操作   # 还可以明确指定 htpasswd 用户表中的用户,可以配置一个或多个。   packages:     '@*/*':       access: $all       publish: $authenticated       unpublish: $authenticated       proxy: npmjs      '**':       access: $all       publish: $authenticated       unpublish: $authenticated       proxy: npmjs    # 服务器相关   sever:     keepAliveTimeout: 60    middlewares:     audit:       enabled: true    # 日志设定   logs: { type: stdout, format: pretty, level: http }