Docker使用.dockerignore

2026-07-15 25
Docker

类型:虚拟化技术

简介:基于操作系统层级的虚拟化技术,将软件与其依赖项打包为容器。

Docker 构建镜像时,会把构建上下文发送给 Docker 引擎。如果项目目录里包含 node_modules、日志、缓存、测试文件、密钥或大文件,构建会变慢,镜像构建过程也可能暴露不该进入上下文的内容。.dockerignore 的作用,就是在构建前排除不需要的文件。

一、为什么需要 .dockerignore

常见问题:

  • 构建速度慢。
  • 上下文体积过大。
  • 本地依赖被复制进去。
  • .env 文件误进入构建流程。
  • 日志和缓存干扰镜像。

.dockerignore 不是镜像优化的全部,但它是构建前最容易忽略的一步。

二、基础写法

在项目根目录创建:

.dockerignore

常见内容:

.git
node_modules
npm-debug.log
*.log
.env
.env.*
dist
coverage
.cache
.DS_Store

这表示这些文件和目录不会进入构建上下文。

三、不要把必要文件忽略掉

如果 Dockerfile 中需要复制 dist,就不能把 dist 忽略掉。规则要结合构建流程设计。

例如:

COPY package.json package-lock.json ./
RUN npm ci
COPY . .

这种构建方式通常应忽略本地 node_modules,但不要忽略 package.json 和锁文件。

四、敏感文件要重点排除

建议排除:

  • .env
  • 私钥文件
  • 本地证书
  • 数据库备份
  • 临时导出文件
  • 编辑器缓存
  • 本地日志

即使 Dockerfile 没有显式复制这些文件,也建议从上下文中排除。

五、检查构建上下文

构建时可以观察输出中的上下文大小。如果上下文过大,优先检查 .dockerignore。

docker build -t example-app .

如果项目很小但上下文显示几百 MB,通常说明本地依赖、缓存或构建产物没有排除。

FAQ

问:.dockerignore 和 .gitignore 一样吗?

不一样。.dockerignore 控制 Docker 构建上下文,.gitignore 控制 Git 跟踪文件。

问:node_modules 要不要忽略?

大多数 Node.js 项目应忽略本地 node_modules,在镜像内重新安装依赖。

问:.env 要不要写进 .dockerignore?

建议写入,避免敏感配置进入构建上下文。

  • 广告合作

  • QQ群号:4114653

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。