有没有一种方法可以扩展具有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中运行命令,而不是从父镜像强制对其执行命令。