作为新时代的前端,我们现在很多的项目都已经使用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这样的生态,会节省我们很多时间。
然而我们节省的时间都花在网络上来……╮(╯▽╰)╭