部署速度优化
通过优化构建工具和部署脚本,减少部署耗时。
优化构建工具
1、使用 esbuild 和升级 webpack5
接入 esbuild 可以使用 infrad 提供的插件:xxx
PS:下面结论中看到的最差部署速度 4min32s 为构建工具优化后的结果,优化前为 7min+
减少网络下载用时
不更换部署方案的前提下,主要减少网络下载占时(减少镜像和依赖大小),并使缓存生效。
修改 Dockerfile
1、将 node 镜像改为精简版的镜像
不要使用 16+的镜像,node 有重大更新会导致某个工具报错。
如果使用精简版的镜像报错,请用回完整版的镜像。
FROM hostname.com/prado-user-images/node:latest AS builder
改为
FROM node:16-alpine AS builder
2、修改 yarn 的执行时机使 yarn install 的执缓存生效
COPY package.json yarn.lock ./
COPY . ./
RUN yarn install –frozen-lockfile
改为
COPY package.json yarn.lock ./
RUN yarn
COPY . ./
3、合并命令,减少容器创建销毁
RUN yarn build:$ENV && rm -rf ./node_modules/
删除多余依赖
使用下面命令查看 node_modules 下各个文件夹的大小,谁大就想办法删掉谁(一些功能重复的依赖如 antd 何 infrad、lodash 和 lamda)
du -d 1 -h | sort -h # 获取目录下文件夹的大小并排序
结果
最优速度为 93 秒,其中构建速度占 73 秒,目前瓶颈在构建太久。