全书目录

第十篇:Docker 完全指南 —— 国际港口集装箱宇宙

第七章:构建 —— `docker build` 不是“压缩文件”,而是按说明书造模板

1 分钟 439 字 第 153 / 962 个阅读单元

现在把 Dockerfile 变成镜像。

bash
docker build -t myapp:1.0.0 .

含义:

text
docker build
├── -t myapp:1.0.0    给镜像打名字和标签
└── .                 构建上下文是当前目录
#1. 什么叫“构建上下文”

构建上下文就是:

你允许 Docker 在构建时看到的那批文件。

通常是当前目录:

bash
docker build .

所以 Dockerfile 里的:

dockerfile
COPY . .

其实是“把构建上下文里的文件拷到镜像里”。

#2. .dockerignore 为什么重要

如果你不写 .dockerignore,构建上下文里很多不该进去的东西也会被送给 Docker:

  • node_modules
  • .git
  • 本地日志
  • 临时文件
  • 构建产物

一个典型例子:

gitignore
node_modules
dist
.git
.env
coverage

这能减少:

  • 构建体积
  • 无意义缓存失效
  • 敏感文件误入镜像
#3. 现代构建默认思路:BuildKit

Docker 官方现在整套构建文档都围绕现代构建体系展开,BuildKit 已经不是可有可无的“高级功能”,而是现代 Docker 构建心智的一部分。

你会在现代 Dockerfile 里经常看到:

dockerfile

它的意义是:

  • 使用现代 Dockerfile 语法
  • 让构建能力跟上当前稳定语义
  • 更好支持缓存、检查和高级构建特性