Node.js 通过在Docker容器中缓存包来加速构建

Node.js 通过在Docker容器中缓存包来加速构建,node.js,docker,npm,dockerfile,npm-install,Node.js,Docker,Npm,Dockerfile,Npm Install,我有一个想法,我还没有完成。在Dockerfile中,我有: FROM node:10 WORKDIR /app RUN "*cache node modules here*" RUN e.g. npm cache add foo bar baz COPY package.json . RUN npm i --cache-min 9999999 --loglevel=warn COPY . . CMD node dist 在npm安装步骤之前,如何通过缓存一些Node.js模块/包来

我有一个想法,我还没有完成。在Dockerfile中,我有:

FROM node:10

WORKDIR /app

RUN "*cache node modules here*"
RUN e.g. npm cache add foo bar baz

COPY package.json .
RUN npm i --cache-min 9999999 --loglevel=warn

COPY . .

CMD node dist
在npm安装步骤之前,如何通过缓存一些Node.js模块/包来创建超高性能DockerFile


有什么技巧可以做到这一点吗?

这是现成的Docker功能。如果你的Dockerfile说

FROM node:10
WORKDIR /app
COPY package.json .
RUN npm install

COPY ...

然后,如果package.json没有更改,Docker将跳过运行npm安装步骤,并使用由此产生的文件系统映像。

可能发生的情况是,package.json文件可能会更改,但依赖项不会更改,或者诸如此类。我也有点困惑——如果npm I命令再次运行,npm I命令是否会将模块放入缓存中以供使用?我的直觉是否定的,但我的理性思维告诉我,我不知道Docker会/可能如何阻止这种情况。