Maison  >  Article  >  développement back-end  >  Comment puis-je optimiser les générations d'images Docker en pré-créant des dépendances et en utilisant la mise en cache de build ?

Comment puis-je optimiser les générations d'images Docker en pré-créant des dépendances et en utilisant la mise en cache de build ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-26 07:36:30597parcourir

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

Dépendances préalables à la création pour des constructions d'images Docker plus rapides

La création d'images Docker peut prendre beaucoup de temps, surtout si les dépendances doivent être construits avant de pouvoir être mis en cache. Pour optimiser ce processus, il est possible de pré-construire tous les modules requis et de les mettre en cache.

Structure du Dockerfile

La structure Dockerfile recommandée pour y parvenir est la suivante :

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 /

Alternativement, pour une seule construction d'architecture, vous pouvez simplifier le Dockerfile pour :

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 /

Montage du cache

La clé de cela l'optimisation consiste à monter un répertoire de cache sur /root/.cache/go-build. Il s'agit de l'emplacement par défaut du cache de build Go. La première build remplira ce cache et les builds suivantes réutiliseront les fichiers mis en cache, réduisant considérablement le temps de build.

Construire avec Docker BuildKit

Pour utiliser ce mécanisme de mise en cache en fait, vous devez construire avec Docker BuildKit activé. Vous pouvez le faire en définissant DOCKER_BUILDKIT=1 avant de créer l'image :

DOCKER_BUILDKIT=1 docker build -t myimage .

Vous pouvez également utiliser docker buildx :

docker buildx build -t myimage .

En pré-construisant et en mettant en cache les dépendances, vous pouvez réduisez considérablement le temps de construction des images Docker, en particulier pour les projets volumineux ou complexes. Cette optimisation peut permettre de gagner un temps considérable lors des processus de développement et de déploiement.

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