2019/10/12

.dockerignore を記述して Docker の image build を高速化する

docker image の build が作業をする毎に重くなる時があります。
今回のケースはカレントディレクトリのサイズが作業ごとに大きくなっていく場合。
その場合は .dockerignore を記述することで解決できます。


環境

  • OS: macOS Mojave 10.14.6
  • Docker: version 19.03.2, build 6a30dfc


具体例

例えば、以下のように image の build を実行したとします。
  • $ docker build -t hoge .
その際、`Sending build context to Docker daemon ...` と長く表示されることがあります。

Docker は image の build 時、指定された directory (今回は ".") のファイルを serialize して daemon に送ります。
このコマンドだと . のサイズが大きいと送信に時間がかかってしまいます。

確かこの時の curerent directory のサイズは2GB程度で、ビルド時間は 100 秒ほどでした。


.dockerignore を記述する

.gitignore のように .dockerignore を directory に配置します。
そして build に関係無いファイルを .dockerignore に記述すると、daemon に送る context から外すことが可能です。
例えば .git など、 docker image に含めることは無さそうなファイルやディレクトリを記述します。
また、git clean などで不要なファイルを消してしまうのも選択肢に入ります。

私の例では.dokerignore を記述した結果 context のサイズが 100MB 以下になり、ビルド時間も20秒以下になりました。
めでたしめでたし。



参考

0 件のコメント:

コメントを投稿