Dockerfileについて

Last-modified: Wed, 21 Oct 2015 00:16:51 JST (731d)

一部のRUNコマンドでキャッシュさせたくない

DockerfileのRUNコマンドは、その行毎に実行した結果をスナップショットとしてキャッシュし、以降Dockerfileが変更された場合でも、変更されたRUNの行部分のみ再実行、スナップショット作成を行います。
つまり、

RUN yum -y update

などと書いても、ビルドした時点のアップデートがキャッシュされるだけで、以降再ビルドしてもキャッシュが利用されます。
ビルド時にキャッシュを利用しないオプションをつけてもいいのですが、そうするとまったくキャッシュが利用されないため、ビルドが遅くなります。
キャッシュの挙動についてはこのあたりが助けになりました。
実行するたびに最新のアップデートを適用した上で実行したいが、毎度毎度生成だと時間がかかるので、どうしたものかと思っていたのですが、ここに解決方法がありました。
ADDコマンドが出現すると、以降はキャッシュされないことを利用し、

ADD http://www.random.org/strings/?num=10&len=8&digits=on&upperalpha=on&loweralpha=on&unique=on&format=plain&rnd=new uuid
RUN yum clean all && yum -y update

とすると、毎度アップデートが走ります。
ADDコマンド以降はキャッシュが効きませんので、これは最後のほうに書きます。

なお、RUNコマンドは実行する度にキャッシュするので、まとめて書ける場合は、&&でつないでしまう方が、まとめてキャッシュしてくれるので早いです。


Counter: 300, today: 1, yesterday: 0

このページの参照回数は、300です。