我改了项目里一个配置文件,但 Docker 构建时前面的 COPY 和 npm install 步骤居然重新执行了,不是说没变的层会复用缓存吗?
我的 Dockerfile 是这么写的:
FROM node:18
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
明明只改了 src 里的代码,按理说 npm install 那层应该命中缓存才对啊,结果每次 build 都要重装依赖,慢死了……
我的做法是把项目分成更细粒度的 COPY 操作。你可以试试这样改写 Dockerfile:
这样做的好处是只有特定目录变化时才会影响后面的构建步骤。比如说只改了 src 里的代码,其他层还是可以复用缓存的。
另外一个小技巧:注意 .dockerignore 文件里要排除掉不必要的文件和目录,比如 node_modules 和一些临时文件之类的,不然也容易导致缓存失效。
希望这能帮你加速构建过程,毕竟等 Docker 构建完成真是件让人头疼的事儿。