是否可以在 docker-compose 中创建中间图像?

Is it possible to create an intermediate image within docker-compose?

假设两个 docker 组合服务,其图像具有以下 RUN 步骤:

FROM base
RUN step1
RUN step2

FROM base
RUN step1
RUN step3

假设每一步都有些冗长。

天真的方法,有两个 Dockerfiles 是次优的(因为 step1 在初始 docker-compose up 期间执行了两次)而不是 DRY(step1 重复两次,如果 step1 是特别糟糕的相当复杂)

我看到的另一种方法,手动创建 intermediate 图像:

FROM base
RUN step1

然后与这两个 Dockerfiles 一起使用:

FROM intermediate
RUN step2

FROM intermediate
RUN step3

是次优的,因为 docker-compose up 将不再开箱即用,因为它需要用户首先手动创建此中间图像。

是否可以完全在 docker-compose 内完成此操作?

第一步是什么?如果真的相同,if 将被守护进程缓存并重用。没有用于合成 'pre-build' 图像供以后使用的设置。它被认为超出了撰写的范围 - https://github.com/docker/compose/issues/1547#issuecomment-112254616