使用docker和docker-sinopia搭建私有的npm

作为新时代的前端,我们现在很多的项目都已经使用npm作为包管理器了,我们会把一些通用组件发布到npm,但是有时候一些组件涉及到业务或者安全方面的,我们不希望把包发布到所有人都能看到的npm上,这时候我们就需要有一个私有的npm资源库。这里我们选用sinopia来搭建我们自己的npm,然后利用docker来进行打包和部署.

首先我们找到了这个项目https://github.com/kfatehi/docker-sinopia,这是别人创建的一个打包sinopia的docker build,我们把它clone下来,然后修改一下配置,适合我们的场景

git clone https://github.com/kfatehi/docker-sinopia.git

然后我们修改里面的config.yaml文件,这个文件在docker启动起来的时候会生成真正的配置文件

uplinks:
  npmjs:
    url: https://registry.npmjs.org/

我们把这里的url改成http://r.cnpmjs.org,因为在国内直接使用npmjs.org会很卡,而且很容易丢包,造成安装失败

修改完折后执行docker build -t jokcy/sinopia .命令,打包成image,这个过程会比较慢,依然是因为网络问题

打包完了之后我们可以传到docker hub上,这样我们可以在我们的服务器上直接通过

docker run --name sinopia -d -p 4873:4873 jokcy/sinopia:latest

来进行启动docker,但是还是网络问题,我们打包上传的过程可以说是蜗牛一般,反正我传了一天都没有传上去。

当然我们还是有别的办法的,通过

docker save -o ~/docker_images/sinopia jokcy/sinopia

命令把我们的image打包成一个文件,然后上传到我们的服务器上,再通过

docker load -i <path to image tar file>

在服务器上load一下这个image,然后就可以run了

当然以上修改配置、build的步骤你可以直接在服务器上执行,这样就省去打包上传的过程了

docker很好用,同时加上docker hub这样的生态,会节省我们很多时间。

然而我们节省的时间都花在网络上来……╮(╯▽╰)╭

    原文作者:Jokcy
    原文地址: https://segmentfault.com/a/1190000004654864
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞