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 ?
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.
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.
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!