为什么在 dockerfile 中使用复制两次?

why using copy two times in dockerfile?

我正在尝试创建 Dockerfile,然后 运行 和 docker-compose.yml

我的Dockerfile如下

FROM node:12


WORKDIR /usr/src/app
COPY ["package*.json", "./"]
RUN yarn install
COPY . .

CMD yarn develop

它工作得很好,我想知道的是,为什么我需要 运行 COPY 两次才能工作?当我看一些教程让它工作时,然后回到文件试图更多地理解命令。我认为有 2 个 COPY,我以为我不小心输入了它,所以我删除了第二个 COPY . . 但后来我想,如果我这样做,再次构建,那么 docker-compose up 将不再起作用.我需要保留第二个 COPY . .

这是什么原因?

提前感谢您帮助澄清

只有当package.json改变时才会执行npm install。这是好的做法。但是,如果您愿意,可以将 COPY ["package*.json", "./"] 替换为 COPY . . 并删除底部 COPY . .。因此,每当您在 src 文件中进行代码更改时,这将执行 npm install。这是一种不好的做法。