2016-04-27 24 views
0

假设有两个码头工人组成,其图像有以下RUN步骤服务:是否可以在docker-compose中创建中间图像?

FROM base 
RUN step1 
RUN step2 

FROM base 
RUN step1 
RUN step3 

假设每一步是有些冗长。

简易方法,具有两个Dockerfile S作为以上是次优的(如步骤1在初始docker-compose up期间执行两次)和不DRY(步骤1重复两次,特别是坏,如果步骤1是相当令人费解)

另一

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

FROM base 
RUN step1 

然后将其与这两个Dockerfile小号用于:

FROM intermediate 
RUN step2 

FROM intermediate 
RUN step3 

并不理想,因为docker-compose up将不再适用,因为它要求用户首先手动创建此中间图像。

有没有办法在docker-compose之内完全做到这一点?

回答

0

什么是第一步?如果它真的是一样的,如果将被守护进程缓存并重用。没有设置用于“预先构建”图像供以后使用。它被认为超出了撰写范围 - https://github.com/docker/compose/issues/1547#issuecomment-112254616

+0

这是一种答案。没有意识到码头工人将重新使用在创建另一个图像时创建的缓存。第1步可能是任何一组被认为运行缓慢的步骤,并且您希望避免重新运行。漂亮的建筑不是要求的一部分,因为图像不打算在撰写之外使用。 – Blanka

+1

不知道'哈哈'来自何处,意味着'预先构建'。如果你对如何构建Docker文件有所了解,你可以从缓存中获得一些很大的好处。 – johnharris85

相关问题