Séparation de l'installation des dépendances de la création de modules dans Go
Go 1.11 a introduit la prise en charge des modules, qui automatise l'installation des dépendances pendant la construction et minimise les reconstructions. Cependant, certains développeurs préfèrent récupérer manuellement les dépendances dans une étape distincte pour exploiter la mise en cache des conteneurs et optimiser la vitesse de reconstruction.
Solution vgo
Dans les versions antérieures de Go, il y avait aucun moyen natif de récupérer manuellement les dépendances. Cependant, le numéro 26610 sur le référentiel Go traitait de cette fonctionnalité :
go mod download
Cette commande vous permet de récupérer manuellement les dépendances sans exécuter le processus de construction. Pour utiliser cette commande, vous n'avez besoin que des fichiers go.mod et go.sum dans le répertoire de votre projet.
Implémentation de Docker
Voici un exemple de script de build Docker qui implémente une construction en plusieurs étapes en cache et utilise le téléchargement du mod go :
FROM golang:1.17-alpine as builder RUN apk --no-cache add ca-certificates git WORKDIR /build # Fetch dependencies COPY go.mod go.sum ./ RUN go mod download # Build COPY . ./ RUN CGO_ENABLED=0 go build # Create final image FROM alpine WORKDIR / COPY --from=builder /build/myapp . EXPOSE 8080 CMD ["/myapp"]
En implémentant cette séparation des dépendances et des étapes de construction, vous peut tirer parti de la mise en cache des conteneurs pour l'installation des dépendances et minimiser les temps de construction ultérieurs.
Considérations alternatives
En plus de l'approche de téléchargement du mod go, l'article « Conteneurisez votre Go Developer Environment – Part 2" explore une autre technique pour optimiser la vitesse de construction : exploiter le cache du compilateur Go. Explorer les deux options peut vous aider à choisir la meilleure stratégie pour votre projet et votre environnement spécifiques.
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!