在这个关于Docker的Node.js教程中:https: //nodejs.org/en/docs/guides/nodejs-docker-webapp/
有什么意义COPY package*.json ./
?
是不是所有的东西都复制了COPY . .
?
有问题的Dockerfile:
FROM node:8
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm install --only=production
# Bundle app source
COPY . .
EXPOSE 8080
CMD [ "npm", "start" ]
Run Code Online (Sandbox Code Playgroud)
Dav*_*aze 14
这是Dockerfiles中的常见模式(所有语言).该npm install
步骤需要很长时间,但您只需在包依赖项更改时运行它.因此,通常会看到只安装依赖项的一个步骤,以及添加实际应用程序的第二步,因为它使重建容器变得更快.
你是对的,如果你要建造一次图像,这基本上是相同的; 最后得到相同的文件系统内容.
但是,当你正在处理包时,就会发生这种情况.你已经改变了一些src/*.js
文件,但没有改变package.json
.你跑了npm test
,看起来不错.现在你重新跑docker build
.Docker注意到package*.json
文件没有改变,所以它使用了它第一次构建的相同图像层而没有重新运行任何东西,它也跳过了这npm install
一步(因为它假设在同一输入文件系统上运行相同的命令产生相同的输出文件系统).所以这使第二次构建运行得更快.
归档时间: |
|
查看次数: |
1646 次 |
最近记录: |