用Docker搭建cnpm私有倉庫以及私有倉庫的使用

dry0106發表於2018-09-25

用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,就將它改成這個。 若你需要修改這個埠,兩個方法:

  1. 克隆我的專案github地址,修改配置檔案,安裝下面的方法自己建立映象,生成容器。
  2. 用我的映象生成容器,進入容器修改配置檔案,然後重啟。

製作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 然後如下圖,推送成功!

用Docker搭建cnpm私有倉庫以及私有倉庫的使用

這裡我將容器的7001,7002對映到17001和17002上,因為7001容易被佔用

通過dockerhub一步生成容器

我把映象傳到dockerhuub上了,可以跳過以上步驟直接使用, docker run -d --name cnpmjs.org -p 17001:7001 -p 17002:7002 dryqiao/cnpmjs.org

現在在瀏覽器開啟localhost:17002,能看到下圖表示倉庫搭建成功!

用Docker搭建cnpm私有倉庫以及私有倉庫的使用

私有倉庫的使用

修改cnpm的源:

cnpm set registry http://localhost:17001

ok,現在下載包的時候,會優先去私有倉庫獲取,若找不到,cnpm會再去公共倉庫獲取。

釋出私有包

cnpm login
cnpm init
cnpm publish
複製程式碼

出現下圖表示釋出成功!

用Docker搭建cnpm私有倉庫以及私有倉庫的使用

可以通過命令檢視這個私有包的資訊 cnpm view @md/hhh

用Docker搭建cnpm私有倉庫以及私有倉庫的使用

下載包

cnpm i [packge name]

END

部落格地址

相關文章