构建镜像时如果长时间卡在 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 构建。