依存関係を事前に構築し、ビルド キャッシュを使用して Docker イメージ ビルドを最適化するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-26 07:36:30
オリジナル
598 人が閲覧しました

How Can I Optimize Docker Image Builds by Pre-Building Dependencies and Using Build Caching?

Docker イメージのビルドを高速化するための依存関係の事前構築

Docker イメージのビルドは、特に依存関係を構築する必要がある場合、時間のかかるプロセスになる可能性があります。キャッシュされる前に構築されます。このプロセスを最適化するために、必要なすべてのモジュールを事前にビルドしてキャッシュすることができます。

Dockerfile 構造

これを実現するために推奨される Dockerfile 構造は次のとおりです。

FROM docker.io/golang:1.16.7-alpine AS build
WORKDIR /src
COPY go.* .
RUN go mod download
COPY . .
RUN --mount=type=cache,target=/root/.cache/go-build go build -o /out/example .

FROM scratch
COPY --from=build /out/example /
ログイン後にコピー
ログイン後にコピー

または、単一のアーキテクチャ ビルドの場合、次のように Dockerfile を簡略化できます。

FROM docker.io/golang:1.16.7-alpine AS build
WORKDIR /src
COPY go.* .
RUN go mod download
COPY . .
RUN --mount=type=cache,target=/root/.cache/go-build go build -o /out/example .

FROM scratch
COPY --from=build /out/example /
ログイン後にコピー
ログイン後にコピー

キャッシュのマウント

これの鍵最適化では、キャッシュ ディレクトリを /root/.cache/go-build にマウントします。これは、Go ビルド キャッシュのデフォルトの場所です。最初のビルドでこのキャッシュにデータが設定され、後続のビルドではキャッシュされたファイルが再利用されるため、ビルド時間が大幅に短縮されます。

Docker BuildKit を使用してビルド

このキャッシュ メカニズムを使用するには事実上、Docker BuildKit を有効にしてビルドする必要があります。これを行うには、イメージをビルドする前に DOCKER_BUILDKIT=1 を設定します:

DOCKER_BUILDKIT=1 docker build -t myimage .
ログイン後にコピー

または、docker buildx を使用できます:

docker buildx build -t myimage .
ログイン後にコピー

依存関係を事前にビルドしてキャッシュすることで、次のことができます。特に大規模または複雑なプロジェクトの場合、Docker イメージのビルド時間を大幅に短縮します。この最適化により、開発および展開プロセスにかかる時間を大幅に節約できます。

以上が依存関係を事前に構築し、ビルド キャッシュを使用して Docker イメージ ビルドを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!