Visual studio code 为什么要将节点_模块移动到父目录
在Visual Studio代码的Docker扩展中,在Dockerfile模板中,节点\u模块目录被移动到父目录。我说的是:Visual studio code 为什么要将节点_模块移动到父目录,visual-studio-code,node-modules,Visual Studio Code,Node Modules,在Visual Studio代码的Docker扩展中,在Dockerfile模板中,节点\u模块目录被移动到父目录。我说的是: 为什么要这样做?这是为了利用Docker中的缓存机制。通常,您的Dockerfile中会有以下内容: 1. RUN apt-get #bunch of stuff you want installed 2. COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"] 3. RUN n
为什么要这样做?这是为了利用Docker中的缓存机制。通常,您的
Dockerfile中会有以下内容:
1. RUN apt-get #bunch of stuff you want installed
2. COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
3. RUN npm install --silent && mv node_modules ../
4. COPY . .
5. CMD node index.js
Docker在“层”中构建其图像,您可以认为在执行Dockerfile
中的每一行时都会添加每一层
那么我们在上面的片段中所说的是:
运行apt get
并将层提交到缓存
package.json
文件从主机复制到容器,提交层npm install
,然后将node\u modules
文件夹向上移动一个目录,npm
将递归地向上搜索,直到找到node\u modules文件夹
,因此你的应用程序不会在意。提交此层node index.js
package.json
,它将只运行npm install…
。如果没有,那么它将不会执行npm install
命令,即使,index.js
可能已经更改
当然,请记住,您应该在.dockerginore
文件中列出节点\u模块
,以便复制代码>不尝试拾取它。我的问题是为什么mv节点\ u模块../
部件?我理解它是如何工作的,但我想知道为什么会这样做。为什么要将节点模块向上移动到目录中?为什么不运行npm install--production--silent
并保持node_模块不变?
1. RUN apt-get #bunch of stuff you want installed
2. COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
3. RUN npm install --silent && mv node_modules ../
4. COPY . .
5. CMD node index.js