Maison > développement back-end > Golang > le corps du texte

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
Libérer: 2024-10-26 07:36:30
original
598 Les gens l'ont consulté

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

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

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

Vous pouvez également utiliser docker buildx :

docker buildx build -t myimage .
Copier après la connexion

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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!