Docker compose 是否可以在docker compose中创建中间映像?

Docker compose 是否可以在docker compose中创建中间映像?,docker-compose,Docker Compose,设想两个docker compose服务,其映像具有以下运行步骤: FROM base RUN step1 RUN step2 及 假设每个步骤都有点长 简单的方法是,有两个如上所述的Dockerfile是次优的(因为在最初的docker compose up过程中,第1步执行了两次),而且不干燥(第1步重复了两次,如果第1步非常复杂,则特别糟糕) 我看到的另一种方法是手动创建中间图像: FROM base RUN step1 然后与这两个Dockerfiles一起使用: FROM inte

设想两个docker compose服务,其映像具有以下
运行
步骤:

FROM base
RUN step1
RUN step2

假设每个步骤都有点长

简单的方法是,有两个如上所述的
Dockerfile
是次优的(因为在最初的
docker compose up
过程中,第1步执行了两次),而且不干燥(第1步重复了两次,如果第1步非常复杂,则特别糟糕)

我看到的另一种方法是手动创建
中间图像:

FROM base
RUN step1
然后与这两个
Dockerfile
s一起使用:

FROM intermediate
RUN step2

FROM intermediate
RUN step3
是次优的,因为
docker compose up
将不再是现成的,因为它将要求用户首先手动创建此中间映像


是否完全在docker compose中执行此操作?

第一步是什么?如果它真的是相同的,则会被守护进程缓存并重新使用。没有将compose设置为“预构建”图像以供以后使用。它被认为超出了撰写的范围

这就是答案。没有意识到docker会重用在构建另一个映像时创建的缓存。步骤1可以是任何一组被认为运行缓慢且希望避免重新运行的步骤。漂亮的建筑不是要求的一部分,因为图像不打算在构图之外使用。不知道“漂亮”是从哪里来的哈哈,意思是“预建”。如果您对DockerFile的结构非常了解,那么您可以从缓存中获得一些巨大的好处。
FROM intermediate
RUN step2

FROM intermediate
RUN step3