点击在我的博客 xuxusheng.com 中查看,有更好的排版哦~
英文好的同学建议直接阅读文档:https://docs.docker.com/engine/reference/builder/#dockerignore-file
在项目中,我们见过很多各式各样的 ignore
文件。
比如使用 .gitignore
来忽略掉你不想追踪的文件:https://git-scm.com/docs/gitignore
使用 .npmignore
来忽略你在发布包时不想发布的文件:https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package
那么 .dockerignore
文件是起什么作用的呢,不管是在 docker build
过程中,还是 docker run
的过程中,有没有这个文件好像并没有什么很大的影响,存在感不强的一个文件。
首先需要理解一下 镜像构建上下文(context)
的概念,参见另一篇博文:docker build 命令后 . 号的意思
理解了这个概念就明白,当我们在 docker build
的过程中,首先会将指定的上下文目录打包传递给 docker引擎
,而这个上下文目录中可能并不是所有的文件我们都会在 Dockerfile
中使用到,那么这个时候就可以在 .dockerignore
文件中指定在传递给 docker引擎
时需要忽略掉的文件或文件夹。
举栗说明~
比如我们在前端项目中,node_modules
文件夹在构建镜像过程中如果用不到,但是又异常庞大,那么向 docker引擎
传递其实是并没有必要的(其实大家电脑性能都这么好,也不在乎这几秒钟了。。。只是举个例子,可以提升镜像构建速度),这个时候就可以将 node_modules
文件夹加入 .dockerignore
文件中。
如下所示,速度提升还是很明显的。
加入前:
加入后: