使用 docker + verdaccio 搭建npm私有倉庫
- 2021 年 11 月 19 日
- 筆記
本文介紹如何使用 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,
//0.0.0.0:4873
,訪問成功就可以了。
使用 docker
鏡像安裝
-
安裝
docker
,略 -
在
docker
下安裝verdaccio
鏡像
使用如下命令即可:docker pull verdaccio/verdaccio
安裝鏡像成功:
-
運行
verdaccio
,使用docker
命令運行鏡像,創建verdaccio
容器// 名稱verdaccio, 端口 4873 docker run -it --name verdaccio -p 4873:4873 verdaccio/verdaccio
啟動容器成功:
啟動成功以後,實際上就可以在瀏覽器訪問了,//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
目錄,並添加verdaccio
的config.yaml
配置文件。
接着處理映射目錄,一般有以下兩種方式:-
直接映射本地目錄,啟動
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:容器目錄映射到本地目錄
-
或者使用
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
安裝啟動成功後,就可以直接網絡訪問。
當頁面出現下圖所示,就表示私有庫搭建成功,後續就可以進行私有包的發佈下載。
發佈一個包
有了私有庫以後,就可以在其上發佈 npm
包。
但初始化時需要先添加用戶,設置用戶名和密碼等,然後就可以直接發包了。
-
添加用戶
npm adduser --registry //0.0.0.0:4873/
輸入用戶名、密碼和郵箱。
-
publish
當需要把某個項目發佈到私有庫時,直接
publish
。npm publish --registry //0.0.0.0:4873/
發佈成功後,刷新頁面,就能看到最新發佈的包。
install
在項目目錄下增加 .npmrc
文件,指定倉庫地址。
registry=//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: //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 }