Catégorie DevOps
Niveau Intermédiaire
Tags Docker, CI/CD, Débogage, Node.js
Format attendu Une partie par question, 500 mots maximum, Dockerfile corrigé compris.
Ton équipe maintient une API Node.js. Voici son Dockerfile, inchangé depuis huit mois : FROM node:latest WORKDIR /app COPY package.json ./ RUN npm install COPY . . RUN npm run build EXPOSE 3000 CMD ["node", "dist/server.js"] Ce qui s'est passé Vendredi à 18 h, le dernier déploiement passe sans problème. Lundi à 8 h, Kevin pousse une correction de trois lignes dans un fichier CSS. Le pipeline échoue pendant la construction de l'image. L'équipe se mobilise : Kevin annule son commit, pensant que sa correction est en cause. Le pipeline échoue toujours. Sandrine vide le cache du runner CI et relance. Même échec. Paul supprime package-lock.json du dépôt, commite et relance, pour « repartir propre ». Toujours le même échec. Le responsable redémarre le serveur CI. Rien. Sur le PC de Kevin, docker build fonctionne parfaitement. L'équipe conclut que la plateforme CI est en panne et ouvre un ticket chez l'hébergeur. Mardi, l'hébergeur répond que tout fonctionne normalement chez lui. La mise en production est bloquée depuis 24 heures. Les indices Le début du journal de construction de vendredi : #2 [1/6] FROM docker.io/library/node:latest@sha256:4b1c9e… #6 [4/6] RUN npm install #6 added 412 packages in 21s Le même passage, lundi : #2 [1/6] FROM docker.io/library/node:latest@sha256:9e07a2… #6 [4/6] RUN npm install #6 npm error path /app/nodemodules/bcrypt #6 npm error gyp info using node@27.0.0 | linux | x64 #6 npm error gyp ERR! stack Error: make failed with exit code: 2 Et sur le PC de Kevin : $ docker image ls --digests node REPOSITORY TAG DIGEST CREATED node latest sha256:4b1c9e… 5 weeks ago $ docker run --rm node:latest node --version v26.4.1 Ta mission Qu'est-ce qui a changé entre vendredi et lundi, alors que personne n'a modifié le Dockerfile ni les dépendances ? Pourquoi le build fonctionne-t-il sur le PC de Kevin ? Parmi les actions de l'équipe, laquelle a aggravé la situation, et pourquoi ? Propose une correction immédiate pour débloquer la production, puis une solution durable pour que cela ne se reproduise plus.
Contraintes Le Dockerfile et le pipeline peuvent être modifiés, pas l'hébergeur de la CI. La correction immédiate doit pouvoir être appliquée en moins de 30 minutes. Personne n'a accès au runner pendant la construction : tu raisonnes à partir des indices.
Cause identifiée : l'étiquette latest a changé d'image 25 points
Écart avec le PC de Kevin expliqué 15 points
Action aggravante identifiée et justifiée 15 points
Correction immédiate applicable 20 points
Solution durable et ses compromis 25 points