Docker 构建一开始就很慢,可以先看构建上下文

12 次浏览1 条回复

构建镜像时如果长时间卡在 transferring context,常见原因是把 .git、node_modules 或构建产物也发给了构建器。项目根目录可以先放一个 .dockerignore:

.git
node_modules
dist
coverage
*.log

然后重新构建:

docker build --progress=plain -t demo:dev .

观察输出里的上下文体积有没有明显变小。.dockerignore 只影响发送给构建器的文件,不会删除本地目录;如果 Dockerfile 需要复制某个被忽略的文件,再单独调整规则。

环境:Docker Engine 24+,BuildKit 构建。

还有一个容易漏掉的点:.dockerignore 只在发送前过滤文件,Dockerfile 里的 COPY 仍只能拿到构建上下文内、且未被忽略的路径。要确认是不是把错误目录当成了上下文,可以先对照:

docker build --progress=plain -f path/to/Dockerfile .

如果上下文已经很小但构建仍慢,再看 Dockerfile 里耗时的 RUN 步骤和缓存是否命中。