有没有一种方法可以扩展具有ONBUILD指令的基本镜像,而只是将ONBUILD指令转发给将来的子镜像,而不是执行它们?就像

FROM scratch as base
ONBUILD do stuff

FROM base as intermediate
# don't "do stuff" yet

FROM intermediate as target_1
# "do stuff" *now*

FROM base as target_2
# also "do stuff" now

基本上,这允许使用多阶段构建来构建“onbuild”样式的图像,因此可能更有效。 Docker中是否存在类似的东西?谢谢。

最佳答案

不,您不能延迟ONBUILD的处理。它将在下一个子镜像上运行。

请注意,除了所有非常特殊的用例之外,我都建议不要使用ONBUILD,因为在构建过程中执行未在Dockerfile中列出的步骤会使用户感到困惑。您的用例可能更合适,是让用户直接在其Dockerfile中运行命令,而不是从父镜像强制对其执行命令。

10-06 05:50