结果是有两个图像,其中最后一个对应于最后一个阶段,提供的标签按定义被标签;
问题:是否可以使用一个Dockerfile的多阶段构建为所有定义的阶段创建一系列标记的映像?
#1 楼
您可以构建和标记多阶段构建的任何阶段。只需对--target
使用docker build
选项。例如,通过层缓存,较早的步骤将从缓存中重用,而不会每次都从头开始重新运行,因此将构建运行到多次使用不同的目标。如果绝对需要通过单个构建命令运行此目标,则可以解析构建的输出,获取中间步骤的图像ID,并标记该图像ID:
docker build --target jdk -t myapp-jdk:v1 .
docker build --target jre -t myapp:v1 .
评论
尝试在单个命令中执行此操作的原因之一:构建上下文不需要多次拉到一起。
–seveibar
18年8月25日在11:15
@seveibar好点。仅发送构建上下文中的任何更改,Buildkit都会更好地处理此问题,但目前仍处于试验阶段。
–BMitch
18年8月25日在11:23
开发人员正在寻找使用buildkit处理此问题的更好方法。最好遵循以下问题:github.com/moby/moby/issues/38197#issuecomment-438348158
–BMitch
19年2月15日在1:30