
当我们运行docker build的时候,Docker会把当前目录的所有文件通过UNIX Domain Socket发送给Docker Deamon进程。
如果你的项目有太多的文件,那么docker build 会非常慢。比如前端项目的node_modules文件夹通常会有大量依赖。
Dockerignore文件的作用类似于 `.gitignore`,它允许开发者指定在构建 Docker 镜像时应忽略的文件和目录列表。通过使用 `Dockerfile.dockerignore` 文件,可以显著提高镜像构建速度的原因如下:
1. 减少上下文传递量
当执行 `docker build` 命令时,Docker 客户端会将 Dockerfile 所在目录及其子目录下的所有文件打包成一个上下文 tar 包,并将其发送到 Docker 引擎中用于构建镜像。如果这个目录包含大量不必要的大文件或不需要编译、复制进镜像的文件(如日志文件、编译输出、缓存等),那么通过忽略这些文件,可以大幅度减小上下文包的大小,从而减少网络传输时间和引擎解压时间。
2. 加速构建过程
在构建过程中,`COPY` 或 `ADD` 指令会将上下文中的文件复制到镜像中。如果有大量的无用文件被包含在内,那么每次执行这些指令时都会浪费时间去处理它们。通过在 `dockerignore` 中排除这些文件,能够避免不必要的文件操作,直接提升构建步骤的速度。
3. 保持镜像精简
除了对构建速度有直接影响外,合理使用 `Dockerignore` 还有助于生成更精简的镜像。较小的镜像意味着更少的存储占用,并且可能更快地在网络上传输和分发,同时也有助于容器启动速度的提升。

常见的模板参考
1.nodejs
.dockerignore
node_modules
.git
.gitignore
2.maven
仅包含target目录
.dockerignore
*
!Dockerfile
!target




