gpt4 book ai didi

node.js - package.json 中的所有 Node 模块在进行小更改后都会重新下载

转载 作者:太空宇宙 更新时间:2023-11-04 03:30:02 29 4
gpt4 key购买 nike

我有一个带有以下 Dockerfile 的 NodeJS 容器

FROM node:6

COPY package.json /tmp/package.json

RUN npm config set registry http://registry.npmjs.org/
RUN cd /tmp && npm install
RUN mkdir -p /app && cp -a /tmp/node_modules /app/

WORKDIR /app

CMD npm run dev

EXPOSE 80

如果每当我运行 docker-compose build 时未修改 package.json,则不会重新安装 Node 模块,这很好。但是,如果我向 package.json 添加一个依赖项,似乎我的所有依赖项都会从 NPM 重新下载,这会浪费大量时间。这种行为是故意的吗?

最佳答案

这就是图层缓存的设计。当您使用与以前相同的输入运行相同的命令时,Docker 会找到您从同一父级开始并运行相同命令的层,并且能够重用该层。当您的输入发生更改(由于 COPY 命令更改其输入)时,缓存将变得无效,并且会返回到在新的 node:6 镜像之上构建。从该图像来看,您之前下载的文件均不可用。

关于node.js - package.json 中的所有 Node 模块在进行小更改后都会重新下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39357105/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com