在Docker构build期间安装c ++包

我有一个dockerfile运行一个c + +应用程序。 部分docker文件有以下命令:

RUN tar -xvf boost_1_56_0.tar.bz2 && \ cd boost_1_56_0 && \ ./bootstrap.sh && \ ./b2 install 

tar文件是docker映像的一部分。 问题是,每次我build立dockerfile时,整个软件包会被安装,这需要花费很长的时间。 我怎样才能防止它?

如果Docker文件中没有任何内容被修改,那么Doc​​ker将使用先前构build的caching数据。 所以,如果你有这样的事情:

 ADD ./myfiles /path/in/container # changes each time RUN tar -xvf boost # etc 

然后每次都会重build。 但是,如果重新组织你的Dockerfile像这样:

 RUN tar -xvf boost # etc ADD ./myfiles /path/in/container # changes each time 

然后,从最后一个Docker构build的二进制构build将从caching中重用。 更一般地说,把更早的事情放在Docker文件中,他们改变的可能性就越小。