无需登录 数据私有 本地保存

.dockerignore 文件生成器 - 根据项目类型忽略文件

24
0
0
0
🐳

.dockerignore 文件生成器

加速 Docker 构建

选择您的项目类型,自动生成优化的 .dockerignore 文件,减小构建上下文,提升构建速度。

选择项目类型 (可多选叠加)
🟢 Node.js
🐍 Python
Java
🔵 Go
💎 Ruby
🐘 PHP
🦀 Rust
📦 通用
快速添加忽略项
🔐 .env 环境变量 🍎 .DS_Store 🪟 Thumbs.db 💻 .vscode/ 🧠 .idea/ 📝 *.swp 交换文件 📋 *.log 日志 🗑️ *.tmp 临时文件 📊 coverage/ 📦 dist/
自定义忽略规则
Enter 快速添加。点击已添加的标签可移除。
预览 .dockerignore
0 条规则
# 请选择项目类型来生成规则...
提示:.dockerignore 文件放在 Dockerfile 同级目录(构建上下文根目录),可显著减小构建上下文大小。
常见问题 (FAQ)

.dockerignore 文件类似于 .gitignore,用于指定在 Docker 构建过程中需要排除的文件和目录。当您运行 docker build 时,Docker 客户端会将构建上下文(通常是一个目录)打包发送给 Docker 守护进程。.dockerignore 中列出的文件将被排除在外,从而:

  • 减小构建上下文大小——避免将 node_modules、日志等大文件发送到守护进程
  • 加快构建速度——减少传输时间和构建时间
  • 保护敏感信息——防止 .env、密钥文件等被意外打包进镜像
  • 提高构建缓存命中率——避免无关文件变更导致缓存失效

虽然语法相似,但它们的作用域不同:

  • .gitignore:告诉 Git 哪些文件不应被版本控制追踪
  • .dockerignore:告诉 Docker 哪些文件不应被包含在构建上下文中

关键区别:.gitignore 中的某些文件(如 .env)通常被 Git 忽略,但在 Docker 构建时可能仍然需要。而 .dockerignore 允许您进一步排除不需要的目录(如 .git/node_modules/),这些目录在构建时通常用不到但体积很大。建议两个文件同时维护,各司其职。

.dockerignore 文件必须放在构建上下文的根目录(通常与 Dockerfile 在同一目录)。Docker CLI 在构建时会自动查找该文件。如果您使用 docker build -f /path/to/Dockerfile 指定了非标准位置的 Dockerfile,.dockerignore 仍然需要在上下文根目录中。

如果您的项目有子目录也需要构建,可以在子目录中放置额外的 .dockerignore,但只有根目录的那个会被 Docker 读取。如果需要排除深层目录中的文件,请使用通配符模式(如 **/node_modules/)。

.dockerignore 使用 Go 语言的 filepath.Match 规则,支持以下模式:

模式说明示例
*匹配任意数量字符(不包括路径分隔符)*.log 匹配 app.log
?匹配单个字符file?.txt 匹配 file1.txt
**匹配任意数量目录层级**/temp/ 匹配所有 temp 目录
!排除例外(取反规则)!important.log 保留该文件
#注释行# 这是注释

注意:/ 结尾的模式只匹配目录。Docker 的 .dockerignore 不支持像 .gitignore 中那样的 / 开头锚定语法,但 ** 提供了强大的递归匹配能力。

有几种方法可以验证:

  1. 检查构建上下文大小:运行 docker build -t test . 2>&1 | head -5,观察发送的上下文大小。添加 .dockerignore 后,这个数字应该明显减小。
  2. 使用临时 Dockerfile 测试:创建一个简单的 Dockerfile 执行 COPY . /app 然后 RUN ls -la /app,检查镜像内的文件列表是否包含了应被忽略的文件。
  3. 使用 tar 模拟:运行 tar --exclude-from=.dockerignore -czf /tmp/context.tar.gz . 查看打包了哪些文件。

如果规则未生效,请检查:文件是否在构建上下文根目录、文件名是否拼写正确(注意开头的点号)、规则语法是否正确。

.git/ 目录通常包含完整的版本历史,在大型项目中可能达到数百 MB 甚至 GB。将其排除可以:

  • 大幅减小构建上下文,加快 docker build 的初始传输阶段
  • 避免构建缓存因 git 操作(如 git fetch)而频繁失效
  • 防止敏感的分支信息或提交历史泄露到镜像中

除非您的 Dockerfile 中明确需要读取 .git 目录(如使用 git rev-parse 注入版本号),否则建议始终将其加入 .dockerignore。如需版本信息,可以在构建前将版本号写入一个单独文件,然后 COPY 该文件即可。