做爲新時代的前端,咱們如今不少的項目都已經使用npm做爲包管理器了,咱們會把一些通用組件發佈到npm,可是有時候一些組件涉及到業務或者安全方面的,咱們不但願把包發佈到全部人都能看到的npm上,這時候咱們就須要有一個私有的npm資源庫。這裏咱們選用sinopia
來搭建咱們本身的npm,而後利用docker來進行打包和部署.前端
首先咱們找到了這個項目https://github.com/kfatehi/docker-sinopia,這是別人建立的一個打包sinopia的docker build,咱們把它clone下來,而後修改一下配置,適合咱們的場景git
git clone https://github.com/kfatehi/docker-sinopia.git
而後咱們修改裏面的config.yaml
文件,這個文件在docker啓動起來的時候會生成真正的配置文件github
uplinks: npmjs: url: https://registry.npmjs.org/
咱們把這裏的url改爲http://r.cnpmjs.org
,由於在國內直接使用npmjs.org會很卡,並且很容易丟包,形成安裝失敗docker
修改完折後執行docker build -t jokcy/sinopia .
命令,打包成image,這個過程會比較慢,依然是由於網絡問題npm
打包完了以後咱們能夠傳到docker hub上,這樣咱們能夠在咱們的服務器上直接經過安全
docker run --name sinopia -d -p 4873:4873 jokcy/sinopia:latest
來進行啓動docker,可是仍是網絡問題,咱們打包上傳的過程能夠說是蝸牛通常,反正我傳了一天都沒有傳上去。服務器
固然咱們仍是有別的辦法的,經過網絡
docker save -o ~/docker_images/sinopia jokcy/sinopia
命令把咱們的image打包成一個文件,而後上傳到咱們的服務器上,再經過ui
docker load -i <path to image tar file>
在服務器上load一下這個image,而後就能夠run了url
固然以上修改配置、build的步驟你能夠直接在服務器上執行,這樣就省去打包上傳的過程了
docker很好用,同時加上docker hub這樣的生態,會節省咱們不少時間。
然而咱們節省的時間都花在網絡上來......╮(╯▽╰)╭