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 サイトの他の関連記事を参照してください。