一発でDockerfileが完成することなんて無いので、なるべく効率よく作れるように下記の事を心掛けています。
1.ステップは細かく分ける。
最終的なDockerfileはステップ数をなるべく減らす必要があるが、Dockerfileを作成している時にはなるべく作業単位を細かくした方が効率がいい。
例えば、インストールに時間の掛かる処理の後ろで、処理の軽い内容をやるとする。
長い時間掛けてインストールが終わったのに、処理の軽い方で失敗した時には、
インストールに掛かった時間がまるごと無駄になってしまう。
時間の掛かる処理ほど細かく分けた方が、Dockerfileを書く時には効率よく書ける。
2.キャッシュをうまく使う。
例えばDockerfileの最初でyumなりaptなりでインストール作業を行っていたとして、途中別の何かをインストールする際に、追加で入れないといけないミドルウェアが出てきた場合、
最初にインストールしているところに追記するのではなく、必要になる処理の直前で追加してやる。
こうすることにより、途中まで作成されたキャッシュイメージを無駄にせずに済む。