是否可以在 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
假设每一步都有些冗长。
天真的方法,有两个 Dockerfile
s 是次优的(因为 step1 在初始 docker-compose up
期间执行了两次)而不是 DRY(step1 重复两次,如果 step1 是特别糟糕的相当复杂)
我看到的另一种方法,手动创建 intermediate
图像:
FROM base
RUN step1
然后与这两个 Dockerfile
s 一起使用:
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。
假设两个 docker 组合服务,其图像具有以下 RUN
步骤:
FROM base
RUN step1
RUN step2
和
FROM base
RUN step1
RUN step3
假设每一步都有些冗长。
天真的方法,有两个 Dockerfile
s 是次优的(因为 step1 在初始 docker-compose up
期间执行了两次)而不是 DRY(step1 重复两次,如果 step1 是特别糟糕的相当复杂)
我看到的另一种方法,手动创建 intermediate
图像:
FROM base
RUN step1
然后与这两个 Dockerfile
s 一起使用:
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。