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
Libérer: 2024-10-31 12:30:31
original
312 Les gens l'ont consulté

## 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 /
Copier après la connexion

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 .
Copier après la connexion
docker buildx build -t myimage .
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal