泊坞窗能否并行构建多阶段映像?

时间:2020-05-21 13:31:28

标签: docker parallel-processing docker-build

我有一个相当大的Dockerfile,它具有多层。其中一些层需要相当长的时间。我注意到许多事情并不相互依赖。

因此,是一个明显的问题:我可以并行docker build吗?

docker build似乎仅具有限制构建速度的选项,而不是加快构建速度(例如--memory)。

示例:假设您有一个Dockerfile看起来像这样。我现在要调用一个docker build --some-flag,它可以并行构建所有阶段,除非它们必须相互协作。

FROM someImage AS stage1
# do some task

FROM otherImage AS stage2
# do another taks

FROM yetAnotherImg As stage3
# more work
COPY --from=stage2 ... # stage3 has to wait for stage2 to finish

您知道--some-flag是否存在吗?您知道如何实现目标的另一种方式吗?

编辑:

我唯一能想到的就是将Dockerfile分成多个阶段,从而减轻修改的麻烦,但这并不是一个理想的解决方案

1 个答案:

答案 0 :(得分:3)

感谢m303945的回答!

此答案为您提供了如何并行构建示例:

Dockerfile:

FROM alpine as s1
RUN sleep 10 && echo "s1 done"

FROM alpine as s2
RUN sleep 10 && echo "s2 done"

FROM alpine as s3
RUN sleep 10 && echo "s3 done"

顺序:docker build .大约需要30秒。

平行:DOCKER_BUILDKIT=1 docker build .大约需要10秒。

来源:

docker documentation

amazing blog post

相关问题