有没有办法将Docker ONBUILD指令延迟到将来的子映像?

时间:2018-07-31 21:47:08

标签: docker dockerfile

是否有一种方法可以扩展具有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中是否存在类似的东西?谢谢。

1 个答案:

答案 0 :(得分:1)

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

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