Maison >développement back-end >Golang >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 ?
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!