Maison >développement back-end >Golang >## Comment puis-je pré-créer des dépendances dans mon fichier Docker pour une génération d'images plus rapide ?

## Comment puis-je pré-créer des dépendances dans mon fichier Docker pour une génération d'images plus rapide ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-31 12:30:31308parcourir

## How Can I Pre-Build Dependencies in My Dockerfile for Faster Image Builds?

Dépendances de pré-construction pour des constructions d'images Docker plus rapides

Lors de la construction d'une image Docker, la mise en cache des dépendances peut réduire considérablement les temps de construction. Cependant, le processus de création initial de ces dépendances peut prendre du temps. Pour rationaliser ce processus, les développeurs recherchent souvent des moyens de pré-construire toutes les dépendances définies dans le fichier go.mod.

La solution

Docker offre une méthode efficace pour réaliser cette optimisation de pré-construction. En structurant votre Dockerfile comme recommandé ci-dessous, vous pouvez bénéficier d'un mécanisme de mise en cache qui accélère considérablement les versions ultérieures :

FROM --platform=${BUILDPLATFORM} docker.io/golang:1.16.7-alpine AS build
ARG TARGETOS
ARG TARGETARCH
WORKDIR /src
ENV CGO_ENABLED=0
COPY go.* .
RUN go mod download
COPY . .
RUN --mount=type=cache,target=/root/.cache/go-build \
GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o /out/example .

FROM scratch
COPY --from=build /out/example /

Ce Dockerfile exploite un montage de cache sur l'emplacement par défaut du cache de construction go, /root/. cache/go-build. Lors de la construction initiale, ce cache sera rempli. Les versions suivantes réutiliseront les fichiers mis en cache, éliminant ainsi le besoin de longues reconstructions de dépendances.

Activation et vérification

Pour activer cette optimisation, vous devez activer Docker BuildKit en définissant DOCKER_BUILDKIT=1 dans votre commande de build. . Alternativement, vous pouvez utiliser l'utilitaire docker buildx.

DOCKER_BUILDKIT=1 docker build -t myimage .
docker buildx build -t myimage .

Vérifier l'efficacité de cette optimisation implique de vérifier si le répertoire de cache go-build est rempli avant d'exécuter go build dans les versions suivantes. Les tests ont confirmé la fonctionnalité prévue de cette approche de pré-construction.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn