安装 Nexus

使用 docker-compose 作部署:

  1. version: '3.1'
  2. services:
  3. nexus:
  4. restart: always
  5. image: sonatype/nexus3:3.21.2
  6. container_name: nexus
  7. ports:
  8. - 8081:8081
  9. volumes:
  10. - ./data:/nexus-data

注意

  • 注意版本号为 sonatype/nexus3:3.21.2 。过高的版本会有 Pro-liscence 的限制,导致 group repository 无法使用。
  • 需要为 nexus-data/instance 提供足够的访问权限,否则会因权限不足而无法启动 Nexus
    • 如上,对应的 host 的 nexus-data 的目录为 ./data ,所以需要执行: mkdir ./data/instance && chmod 777 -R ./data/instance
  • 第一次登陆时,需要查看默认的 admin 密码,保存于: ./data/admin.password 文件中。

部署 npm 私有仓库

0x01 创建 blob store

创建 npm 专用的 blob store:
image.png

0x02 创建 repository

依次创建以下三个类型的 npm repository:

  • npm(hosted):用于保存自己上传的
  • npm(proxy):用于缓存外部的 repository,如:淘宝镜像(https://registry.npm.taobao.org)。
  • npm(group):基于上述两个 repository 创建,供 developer 使用。

说明:将 hosted repository 和 proxy repository 结合,实现了巧妙的「内部」与「外部」的平衡。

hosted repository 可以供应内部开发的 npm package;而外部使用过的 package,由于引入了 proxy repository,得以被缓存到内网。此时,再由其它项目使用相同的 package 时,便可以利用内网的缓存 package,加速 npm install 的过程。

而这,正是使用 Nexus 的优势所在。

注意:上传( npm publish )自己的代码,使用的是 hosted repository,而从 repository 下拉 package 时( npm i ),使用的是 group repository。切忌将两者混淆
image.png

npm(hosted)
image.png

npm(proxy)
image.png

npm(group)
image.png

0x03 修改 Realm

在 Realms 中添加 npm Bearer Token Realm:
image.png

0x04 上传/下载 npm 包

上传 npm 包,安装已上传的 npm 包(下述 127.0.0.1 应修改为你的 Nexus 的真实 IP):

  1. # 设置 group 为默认的 registry
  2. npm config set registry http://127.0.0.1:8081/repository/npm-group/
  3. # 用户登录,携带参数 -registry,以避免上传到 group repository
  4. npm login -registry="http://127.0.0.1:8081/repository/npm-hosted/"
  5. # 上传代码,携带参数 -registry,以避免上传到 group repository
  6. npm publish -registry="http://127.0.0.1:8081/repository/npm-hosted/"
  7. # 安装已上传代码,此时使用的是第一步默认设置的 group repository
  8. npm i pdg-nacos-client