笔者想通过jenkins实现一个简单的自动化部署,目前我的操作如下
- 在工程文件下面新建了dockerfile文件,通过多阶段构建来利用缓存提高构建速度
- 在jenkins构建时编写了脚本,主要操作就是删除上一次构建的容器和镜像文件,重写构建一个新的镜像和容器
但是有一个问题就是删除了上一次的镜像和容器docker的缓存是不是就是不在了,无法利用缓存来提高构建速度,如果我想利用dockerfile的缓存提高构建速度,应该怎么去实现呢?
这是我的dockerfile文件,主要就是缓存了package.json减少install的时间
FROM node:14-alpine
WORKDIR /project
COPY package*.json /project/
RUN npm install
COPY . /project
RUN npm run build
FROM nginx
COPY --from=0 /project/dist /usr/share/nginx/City
COPY --from=0 /project/default.conf /etc/nginx/conf.d/City.conf
多阶段构建并不一定能提高构建速度,多阶段的目的更多的是为了降低最终打包的镜像大小。是不是利用了缓存,和阶段构建没什么关系,和Dockerfile的指令有关系。
镜像越小,推送镜像到镜像仓库的时候,速度越快 :)
可以保留一个历史版本的镜像,缓存就还在,速度会快很多。
还可以尝试下面几个方法: