Cache de build

docker build réutilise une couche quand son instruction et ses entrées n'ont pas changé depuis le dernier build. La première instruction qui change invalide le cache de toutes les instructions qui la suivent.

Comment ça marche

Pour RUN, la clé de cache est le texte de la commande ; pour COPY et ADD, c'est le contenu des fichiers copiés. C'est pour cela que les Dockerfiles copient d'abord le manifeste des dépendances, installent les dépendances, et seulement ensuite copient le code source, qui change à chaque commit.

Ce qui casse

COPY . . avant npm ci ou pip install fait qu'un changement d'une ligne de code réinstalle toutes les dépendances : les builds passent de quelques secondes à plusieurs minutes. Repère CACHED dans la sortie du build pour voir ce qui a été réutilisé.

Dans un Dockerfile

FROM node:20-alpine
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --omit=dev
COPY src ./src
CMD ["node", "src/server.js"]

Regarde-le casser, puis répare-le

Écris le Dockerfile ou le fichier compose, tape les commandes docker, et regarde un serveur simulé les exécuter à travers redémarrages, mises à jour et trafic. Gratuit pour commencer.