首页/云/云与容器速查/.dockerignore 构建上下文裁剪
容器与 Docker106 条

.dockerignore 构建上下文裁剪

放在构建上下文根目录,按 gitignore 风格排除文件:缩小发送给构建器的上下文、加速构建,并防止 .env、密钥、node_modules 混进镜像。

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

.dockerignore 是什么

它放在构建上下文根目录,按类似 .gitignore 的语法排除文件,作用有两个:缩小发送给构建器的上下文体积以加快构建,以及防止环境文件、密钥与本地依赖目录混进镜像层。它只影响构建上下文,不影响运行中的容器。

基本信息

位置与 Dockerfile 同目录,作用于整个构建上下文
语法glob 通配、! 反选、# 注释,行为与 .gitignore 接近
常见排除依赖目录、.git、构建产物、日志、环境文件与本地缓存
收益上下文更小构建更快,敏感文件不进入镜像层
注意被排除的文件 COPY 不到,会直接报文件不存在
生效范围只作用于构建上下文,运行时挂载不受影响

建议排除清单

类别示例原因
依赖目录node_modules、vendor本地版本与平台可能不匹配
版本控制.git体积大且会泄露提交历史
构建产物dist、build容器内应重新构建产物
环境与密钥.env、证书与私钥文件防止密钥进入镜像层
日志与缓存*.log、本地缓存目录无意义且拖慢构建

示例

示例
node_modules
.git
dist
*.log
.env*
!.env.example

典型使用场景

  • 缩小上下文体积,明显缩短每次构建的传输与复制时间
  • 避免把本地环境文件与密钥打进镜像
  • 排除本地依赖目录,改在镜像内安装以保证一致性
  • 排除构建产物,确保产物由镜像内构建流程生成
被排除的文件 COPY 不到,会报文件不存在;出现这类报错先核对排除规则,再怀疑构建上下文路径选错。
反选语法要生效,前提是父目录没有被整体排除:先排除整个目录,再用反选单独放回某个文件,通常不会按预期生效。
即便把 .dockerignore 与 Dockerfile 写进排除列表,构建器仍会读取它们来完成构建,指望用排除规则隐藏这两个文件没有意义。

易错点

  • 漏排除环境文件:密钥被打进镜像层,推送仓库即泄露
  • 用 ! 反选前没先排除父目录:反选不生效,文件仍被忽略
  • 排除过头把构建必需文件裁掉:COPY 失败,构建中断
  • 以为排除规则影响运行时:实际挂载目录不受它约束
  • 本地已构建过就直接复用缓存:上下文变化后仍拉旧文件

数据来源与参考

  • Docker Docs:.dockerignore file

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌