首页/云/Docker 容器速查/.dockerignore 排除构建上下文
镜像与构建107 条

.dockerignore 排除构建上下文

列出不发送给构建器的文件与目录:加快上下文传输、防止敏感文件被 COPY 带入、让缓存哈希更稳定。

Docker 容器速查云更新于 2026-10-13

.dockerignore 是什么

构建上下文里的排除清单:列出的文件与目录不会发送给构建器。它同时解决三个问题:传输更快、敏感文件不会被打进镜像、缓存键更稳定。写法与常见的忽略文件接近,支持通配与例外标记。

基本信息

位置构建上下文根目录,文件名固定带前导点
语法每行一个模式,支持通配、目录匹配与叹号开头的例外
生效范围所有构建阶段,被排除的文件在任何阶段都不可见
常见排除项版本库元数据、依赖目录、日志、环境变量文件、构建产物
注意点它只影响构建上下文,不改变版本库里的文件

典型使用场景

  • 加速构建:把依赖目录与版本库元数据排除,减少上下文传输与哈希计算
  • 防止泄密:把本地环境变量文件、密钥目录排除,避免被打进镜像
  • 避免覆盖依赖:排除宿主上的依赖目录,防止复制时覆盖容器里装好的依赖
  • 稳定缓存:排除日志与临时文件,避免它们的变动让缓存失效
  • 保留例外:整目录排除后单独放行某个必要文件

常用排除清单

常用排除清单
.git
node_modules
**/*.log
.env*
dist
coverage
tests/
!tests/keep.json

常见排除项与理由

排除项理由不排除的后果
版本库目录体积大且与构建无关上下文传输慢,且可能泄露提交历史信息
依赖目录会在镜像内重新安装覆盖容器内依赖,原生模块跨平台失效
环境变量文件含口令与密钥敏感信息进入镜像层,任何拿到镜像的人都能读
日志与临时文件内容频繁变动缓存频繁失效,构建变慢
构建产物目录构建时重新生成体积无谓增大,甚至覆盖新产物

使用时容易踩的点

  • 排除规则对所有阶段生效,某个阶段需要的文件别误排,否则该阶段构建失败
  • 被排除的文件仍留在版本库与工作目录里,只是构建时看不到
  • 复制指令引用了被排除的文件会直接报错,报错会指出源文件缺失
  • 模式写法要与实际路径匹配,不确定时先用构建日志观察上下文大小
  • 多环境共用一份排除清单时,注意不要排除某个环境需要的配置文件
排除依赖目录往往是最有收益的一条:依赖在镜像里由包管理器安装,宿主上的版本可能与容器内的运行环境不兼容,复制进去反而制造问题。
凭据类文件必须排除。写进镜像的内容会留在层里,即使后续指令删除,也无法真正抹掉,镜像一旦分发就等于公开。

易错点

  • 忘记排除依赖目录,复制源码时覆盖容器内已安装的依赖,原生模块直接失效
  • 把某个阶段需要的文件一并排除,构建到该阶段直接失败且原因不直观
  • 环境变量文件没有排除,口令随镜像分发出去,事后难以收回
  • 以为排除后文件就删除了,实际文件仍在工作目录里,只是不参与构建

数据来源与参考

  • Docker 官方文档:.dockerignore file(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌