node.js - 为什么要在复制 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
?
解决方案
这是因为 Docker 中的多层构建。每一层(/step)都被缓存,所以这样NPM install
不会在每次更改源代码时运行,而仅在更改package.json
or时运行package-lock.json
。
推荐阅读
- typescript - react bootstrap 预期的声明或声明
- android - Kotlin 协程停止在除第一个片段实例化之外的每个片段实例上启动,使用 ViewPager
- javascript - 连接到 MySQL 数据库并仅使用客户端 Javascript 和 HTA 进行查询
- ruby-on-rails - nokogiri 没有安装在 ruby 2.7.1 centos 7.2 中
- jenkins - 我可以获得重新触发当前工作的构建的构建信息吗?
- ios - 从 Firebase 转化跟踪中排除某些产品 ID?
- postgresql - 小型 PostgreSql 数据库的莫名其妙的查询时间
- gerrit - Gerrit - 如何分叉存储库?
- python - 如何从 eventbrite 获取所有页面数据
- javascript - 如何知道数组的所有元素是否属于一个范围