Maison >développement back-end >Golang >Comment la récupération manuelle des dépendances peut-elle optimiser les builds Go Docker ?

Comment la récupération manuelle des dépendances peut-elle optimiser les builds Go Docker ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-10 04:42:12161parcourir

How Can Manual Dependency Fetching Optimize Go Docker Builds?

Récupérer manuellement les dépendances pour les optimisations de Docker Build

Dans l'environnement de programmation Go, l'outil go gère normalement automatiquement la gestion et l'installation des dépendances. Cependant, pour les builds d'images Docker optimisées, il peut être avantageux de séparer l'installation des dépendances en une étape distincte.

Dans Go 1.11 et les versions antérieures, cela n'était pas possible en raison de l'absence de commande dédiée. Cependant, un correctif dans le numéro 26610 a introduit la commande go mod download.

Pour exploiter cette commande pour les versions Docker optimisées :

  1. Copier le manifeste de dépendance : Copiez les fichiers go.mod et go.sum dans le contexte de construction de l'image Docker.
  2. Exécuter go mod download : Exécutez go mod download pendant l'étape de construction de Docker pour récupérer manuellement les dépendances.

Voici un exemple de construction Docker en plusieurs étapes avec mise en cache des couches :

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"]

L'installation des dépendances séparées permet à Docker de tirer parti de la mise en cache des couches, ce qui rend les reconstructions plus efficaces car de nombreuses modifications de code n'affectent généralement pas dépendances.

De plus, envisagez d'exploiter le cache du compilateur Go comme décrit dans l'article « Conteneurisez votre environnement de développement Go – Partie 2 » pour accélérer davantage les temps de 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!

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