基於Docker部署私有npm

NPM做爲前端最cool及最爛的包管理器,它解決困擾前端工程化發展中代碼模塊管理的大問題。可是隨着業務需求的發展,咱們的代碼從之前的單項目複用,延伸出了多項目複用的需求。原本項目之間代碼複用管理的情景是醬紫的:前端

小諸:誒,你那邊功能A實現了沒有?
小文:實現了,在XXX項目裏的aaa.js,你拷貝複製到你項目了就行。
小諸:我靠,你寫的代碼有毒,有bug,坑爹,你更新一下吧
小文:OK,XXX項目沒有觸發這個bug,XXX2裏有用到,你git拉一下從新拷貝一遍吧
小諸:...nginx


這種管理模式較爲混亂,而實際上NPM的出生也是爲了解決這個問題,有一個統一的管理源去管理全部的代碼模塊。可是npm publish後的代碼是開源的,而公司部分業務組件並不適合去作開源。因此私有的NPM就頗有必要了。

而在私有npm中阿里的cnpm功能是最強大的,我固然選擇用這個。而後最近恰好部署了一臺docker服務器,相信很容易就能夠部署好。git

在Docker Hub上找到了hbrls/cnpmjs這個鏡像github

$ docker pull hbrls/cnpm:0.0.5
$ docker run -d \
         -p 7001:7001 \
         -p 7002:7002 \
         -v /path/to/config:/var/app/cnpmjs.org/config \
         -v /path/to/customize/README.md:/var/app/cnpmjs.org/docs/web/readme.md \
         -v /path/to/storage:/var/www \
         --name cnpm hbrls/cnpm:0.0.5

直接依照他的默認配置作好了,懶得改了。。。可是發現莫名報了錯
-v /path/to/customize/README.md:/var/app/cnpmjs.org/docs/web/readme.md 文件映射的時候一直報錯,不得其道,也木有解決方案,阿西巴!
固然我以前爲了方便管理裝了一個shipyard去管理docker(萬萬沒想到給將來留下了坑)web

PS:後來發現readme.md映射報錯是由於我沒有提早把readme.md放到host的文件夾中,致使自動建了一個叫作README.MD的文件夾,ORZ。。。。docker

最後我去cnpm項目中把默認的配置和readme.md拉下來放到host中config文件夾下面的配置文件文件名必定要是index.js,另外記得須要把index.js中bindingHost字段從127.0.0.1修改成0.0.0.0才能直接外網訪問,懶得用nginx作代理了,麻煩。npm

而後我就遇到了由於shipyard帶來的坑,docker下安裝了shipyard後默認佔用了7001端口,萬萬沒想到能這麼湊巧,後來用docker ps檢查了端口才發現,直接映射爲7003好了。
OK,跑起來了。前端工程化

以前躺在坑裏沒跑出來的時候想着不用cnpm,直接弄個npm好了,還在docker上搭了一個sinopia,這個配置就相對簡單了,固然功能也沒有cnpm強大,不過好在簡單實用知足需求。這個部署挺簡單沒啥坑,我就很少BB了服務器

by panwkapp

相關文章
相關標籤/搜索