Garder les secrets hors des images

Tout ce qui est écrit dans une image, par ENV, ARG, COPY ou un RUN, peut être lu par quiconque peut la télécharger, même si une couche suivante le supprime. Les secrets sont donnés au conteneur au moment où il démarre.

Comment ça marche

docker history et docker inspect révèlent les valeurs de ENV et ARG, et chaque couche peut être extraite de l'image. Passe les secrets avec -e, --env-file ou les secrets Compose au lancement, et utilise RUN --mount=type=secret pour ceux dont le build lui-même a besoin.

Ce qui casse

COPY . . avec un fichier .env dans le contexte, ENV DB_PASSWORD=… ou un jeton npm passé en argument de build finissent tous dans le registre. Une fois l'image poussée, change le secret : le retirer de l'image suivante ne l'efface pas de l'ancienne.

Dans un terminal

docker history --no-trunc orders-api
docker run -d --name api --env-file ./prod.env orders-api

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.