使用nexus搭建npm本地私人倉庫
背景
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映象安裝
- 埠對映:
外部埠 | 對映埠 | 倉庫型別 | 描述 |
---|---|---|---|
5565 | 8081 | group | 後臺訪問主埠;同時是安裝依賴的主埠,包含下面兩種型別的倉庫 |
5567 | 8082 | hosted | 私有倉庫,內部開發上傳的倉庫,不對外暴露 |
5566 | 8083 | proxy | 代理倉庫,即第三方倉庫,如taobao |
搭建私人倉庫
-
拉取nexus官方docker映象
docker pull sonatype/nexus3 # 官方映象 docekr pull 10.0.95.63:5566/nexus # 本地映象
-
建立
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
-
在瀏覽器中開啟路徑
http://10.0.95.63:5565
,若能開啟以下介面,則代表配置成功然後點選
Sign in
進行登入,首次登入時,賬號為admin,密碼自動生成在/media/mes/file2/nexus3/admin.password
檔案中cat /media/mes/file2/nexus3/admin.password
將密碼輸入到登入框中即可
-
點選
Configuration
–Repositories
–Create repository
建立倉庫分別建立以下三種型別的倉庫
-
建立
hosted
型別的倉庫,選擇npm(hosted)
,輸入倉庫名稱npm-hosted
,然後點選Create repository
建立倉庫; -
建立
proxy
型別的倉庫,選擇npm(proxy)
,輸入倉庫名稱npm-taobao
,輸入代理地址https://registry.npm.taobao.org/
勾選
Auto blocking enabled
,將Maximum component age修改為-1
,將Maximum metadata age修改為30
,然後點選Create repository
建立倉庫; -
建立
group
型別倉庫,選擇npm(group)
,輸入倉庫名稱npm-group
,然後將上面建立的倉庫移到Members
中,然後點選Create repository
建立倉庫; -
建立完成後,如下圖
-
驗證
# 方法一: 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 # 驗證是否能從倉庫中獲取包
-
若登入報錯:
Unable to authenticate, need: BASIC realm="SOnatype nexus Repository Manager"
,解決方案:
- 選擇
Security
下的Realms
,將npm Bearer Token Realm
從Available
移到Active
中
- 選擇
相關文章
- 使用Nexus搭建Maven本地倉庫Maven
- 使用nexus搭建yum倉庫
- docker搭建私人git倉庫DockerGit
- 使用verdaccio搭建私有npm倉庫NPM
- 使用verdaccio 搭建npm私有倉庫NPM
- 使用 docker + verdaccio 搭建npm私有倉庫DockerNPM
- 在本地搭建 SVN倉庫 和 git 倉庫 (倉庫僅限在本地使用)Git
- 建立你自己的本地倉庫(Maven倉庫管理-Nexus)Maven
- NPM 私有倉庫的搭建NPM
- 搭建自己的私服倉庫Nexus
- docker使用容器搭建本地私有倉庫Docker
- 利用nexus構建maven、docker、npm、gradle私服倉庫MavenDockerNPMGradle
- Jenkins之Nexus搭建Maven私有倉庫教程JenkinsMaven
- nexus 中央倉庫
- 從模組化到NPM私有倉庫搭建NPM
- 基於verdaccio的npm私有倉庫搭建和使用總結NPM
- 搭建npm私有映象倉庫,天下苦於npm build久矣NPMUI
- Docker基礎-搭建本地私有倉庫Docker
- nexus 上搭建npm私有伺服器NPM伺服器
- Maven倉庫管理之NexusMaven
- Firewalld共享上網及本地yum倉庫搭建
- Maven私有倉庫-Nexus3MavenS3
- maven倉庫管理器NexusMaven
- Harbor倉庫搭建及使用
- Git 本地倉庫和裸倉庫Git
- Docker 從入門到精通(二) 搭建本地倉庫Docker
- Maven私服倉庫配置-Nexus詳解!Maven
- rhel 7.6使用映象做本地yum倉庫
- 虛擬機器中Centos7搭建本地倉庫虛擬機CentOS
- 在5分鐘內搭建企業內部私有npm倉庫NPM
- 用Docker搭建cnpm私有倉庫以及私有倉庫的使用DockerNPM
- Docker倉庫之Registry私有映象倉庫的搭建與使用Docker
- git本地倉庫關聯遠端倉庫Git
- Android業務元件化之Gradle和Sonatype Nexus搭建私有maven倉庫Android元件化GradleMaven
- maven 將本地jar打入本地倉庫MavenJAR
- 在個人伺服器上搭建git服務,建立屬於自己的私人倉庫伺服器Git
- 使用 SVN 搭建 Composer 私有倉庫
- git倉庫之gitlab搭建使用Gitlab