首页 > 解决方案 > 为什么要在复制 package.json 后复制 dot dot?

问题描述

我正在尝试有关如何在此处对 nodejs 应用程序进行 dockerize 的教程:https ://nodejs.org/en/docs/guides/nodejs-docker-webapp/

我不明白的是为什么我们不使用这个 docker 文件

FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./

RUN npm install
COPY . .

EXPOSE 8080
CMD [ "node", "server.js" ]

并将其简化为:

FROM node:14
WORKDIR /usr/src/app
COPY . .

RUN npm install


EXPOSE 8080
CMD [ "node", "server.js" ]

也就是为什么我们要在 npm install 之后复制所有的文件呢?为什么不先这样做,因为它已经包含package*.json?

标签: node.jsdocker

解决方案


这是因为 Docker 中的多层构建。每一层(/step)都被缓存,所以这样NPM install不会在每次更改源代码时运行,而仅在更改package.jsonor时运行package-lock.json


推荐阅读