通过对于docker的官方文件学习,我学到了docker下node.js项目的package.json每一条指令都是会生成一个镜像(也可以称为layer),
而每一层(layer)都是在上一层的基础上进行命令的执行。所以把
COPY package.json yarn.lock ./
RUN yarn install --production
先写就是为了让docker每次生成的镜像只要依赖没有变,前4层layer都是一样,docker就可以直接拿上次镜像的执行出的layer来用,复用。
所以会执行速度加快,而.dockerignore这个文件,就是构建镜像时对那些不需要每次进行拷贝的文件(例如:经常不变的依赖文件)直接复用,
不进行重新下载。
总结:docker构建镜像,就像制作洋葱一样,只要从”芯“到表皮这之间有一层出现不同,那么出现不同的那一层后就不会复用,只能重新下载和复制。
.dockerignore就是在docker进行下载的时候忽略某些文件。