KDOC 183: イメージビルド時にツール側のキャッシュを使う

この文書のステータス

  • 作成
    • 2024-06-04 貴島
  • レビュー
    • 2024-06-06 貴島

概要

Docker imageをビルドするときレイヤーキャッシュが生成されるが、ファイル内容に違いがあると破棄されてビルドが再実行される。なのでコードが1行でも、依存ライブラリが1行でも変更されると、ゼロからビルドして時間がかかることになる。パッケージ管理ツールやコンパイラ自体のビルドキャッシュ/インストールキャッシュを利用するには、専用の領域を指定して保存しておく。

# Dockerfile
RUN --mount=type=cache,target=/go/pkg/mod \
    --mount=type=cache,target=/root/.cache/go-build \
    --mount=type=bind,target=. \
    go build .

これによって、2段階のキャッシュを利用することになる。

  1. 内容が全く同じ場合はDockerのレイヤーキャッシュを使う
  2. 内容が変わった場合はパッケージ管理ツールやコンパイラのキャッシュを使う

となり、高速化できる。

関連

なし。