用Docker搭建cnpm私有倉庫以及私有倉庫的使用
搭建cnpm私有倉庫
這是官方文件: Deploy a private npm registry in 5 minutes 但是按照這個跑不起來,一直報環境的環境,所以我稍微修改了下程式碼,下面是我的Dockerfile:
FROM node:10-alpine
MAINTAINER qiao <445271466@qq.com>
RUN npm install -g cnpm && cnpm i -g cnpmjs.org sqlite3
COPY config.json /root/.cnpmjs.org/
VOLUME /root/.cnpmjs.org
EXPOSE 7001 7002
CMD ["cnpmjs.org", "start"]
複製程式碼
cnpmjs.org修改的部分配置, cnpmjs.org預設配置
{
"admins": {
"dev": "dev"
},
"scopes": [
"@md"
],
"enablePrivate": true,
"bindingHost": "0.0.0.0",
"registryHost": "localhost:17001"
}
複製程式碼
admins
是倉庫使用者
scopes
是域,私有包都要加上這個字首
registryHost
是一個坑,預設是r.cnpmjs.org
,
若不修改,安裝私有包的時候會從這個地址的倉庫獲取,會報404錯誤,因為這是公有倉庫地址,私有包並沒有傳到上面,
我們需要將他改成容器對映出來的地址,我容器對映出來的地址是localhost:17001
,就將它改成這個。
若你需要修改這個埠,兩個方法:
- 克隆我的專案github地址,修改配置檔案,安裝下面的方法自己建立映象,生成容器。
- 用我的映象生成容器,進入容器修改配置檔案,然後重啟。
製作Docker映象
docker image build -t cnpmjs.org:1.0 .
生成容器
docker run -d -p 17001:7001 -p 17002:7002 --name mdnpm.org cnpmjs.org:1.0
推送映象到dockerhub
先登入自己的docker賬號:docker login
推送映象的規範是:docker push 註冊使用者名稱/映象名
本地的映象需要先打個tag,標上自己的使用者名稱和版本號
docker tag cnpmjs.org:1.0 dryqiao/cnpmjs.org:1.0
docker push dryqiao/cnpmjs.org:1.0
然後如下圖,推送成功!
這裡我將容器的7001,7002對映到17001和17002上,因為7001容易被佔用
通過dockerhub一步生成容器
我把映象傳到dockerhuub上了,可以跳過以上步驟直接使用,
docker run -d --name cnpmjs.org -p 17001:7001 -p 17002:7002 dryqiao/cnpmjs.org
現在在瀏覽器開啟localhost:17002
,能看到下圖表示倉庫搭建成功!
私有倉庫的使用
修改cnpm的源:
cnpm set registry http://localhost:17001
ok,現在下載包的時候,會優先去私有倉庫獲取,若找不到,cnpm會再去公共倉庫獲取。
釋出私有包
cnpm login
cnpm init
cnpm publish
複製程式碼
出現下圖表示釋出成功!
可以通過命令檢視這個私有包的資訊
cnpm view @md/hhh
下載包
cnpm i [packge name]
END