推广 热搜:   公司  企业  中国  快速    上海  行业  未来  设备 

基于Docker的项目构建速度优化策略(Npm构建版)

   日期:2024-12-29     移动:http://fabua.ksxb.net/mobile/quote/5118.html

项目目的

由于每次构建项目时npm都需要从远程仓库拉取npm依赖,项目构建的其他过程耗时在几十秒左右,但是依赖拉取过程耗时通常在几十秒到几分钟不等,所以对于npm依赖拉取的优化成为项目构建时间优化的重中之重。(以上均为中小型微服务项目测试数据

本文通过docker镜像和npm缓存技术来解决以上问题。我们先来了解一下npm缓存原理。

NPM缓存原理

优化原理

有了npm缓存技术,我们只需要构建一个带有缓存的docker镜像文件,即可极大的减少项目构建时间。

操作理论流程如下

  1. 准备所有项目的所有依赖文件放进同一个package.json中
  2. 准备Dockerfile文件内容如下
 
  1. 构建镜像
 
  1. 修改其他项目的Dockerfile中的源镜像为本镜像
 
 

制作基础系统镜像

1. 准备工作

准备一个空目录里面放入如下文件,一个要缓存的package.json文件,一个Dockerfile文件。

Dockerfile文件内容如下

 
2. 制作基础系统镜像
 
3. 修改其他项目dockerfile文件进行测试
 
4.上传基础系统镜像到镜像仓库
 

注意:仓库地址没有加协议部分,docker 默认的安全策略需要仓库是支持 的,如果服务器只能使用 http 传输,那么直接上传会失败,需要在 docker 客户端的配置文件中进行声明。

5. 修改其他项目dockerfile文件
 
 

构建速度明显变慢,缓存是否会过期

目前并无资料证明服务器检查缓存过期采用何种技术,ETag是否是hash。

通常,ETag 值是内容的哈希、上次修改时间戳的哈希或只是一个修订版号。例如,Wiki 引擎可以使用文档文章内容的十六进制哈希。

如果日后发现存在缓存过期现象(构建明显变慢)可以在所有项目的npm install命令中添加 --prefer-offline 参数来强制优先使用缓存(版本不同的包依然会走网络)。

用户可以指定缓存使用的策略

–prefer-offline: 将使npm跳过任何条件请求(304检查)直接使用缓存数据,只有在缓存无法匹配到的时候,才去访问网络。这样我们将依赖包添加到项目的过程就会快很多。

例如,npm install express --prefer-offline将现在缓存中匹配express,只有在本地缓存没有匹配到的情况下,才去联网下载。

–prefer-online: 与它将强制npm重新验证缓存的数据(使用304检查,并使用重新验证的新鲜数据刷新缓存。

本文地址:http://fabua.ksxb.net/quote/5118.html    海之东岸资讯 http://fabua.ksxb.net/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2023022329号