Documentation Index
Fetch the complete documentation index at: https://snakysec.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Runbook ops — docker exec n’hérite pas de l’env runtime
Symptôme
Tu es en train d’investiguer ou de fix un containermssp-app qui tourne déjà.
Tu fais un docker exec mssp-app sh -c '...' qui doit utiliser des secrets
runtime (DATABASE_URL, REDIS_URL, AUTH_SECRET, ENCRYPTION_KEY, etc.). La commande
échoue avec une erreur d’authentification, un secret vide, ou un comportement
inexpliqué.
Exemple concret — incident MSSP-PLATFORM-3 (2026-04-30) :
Cause racine
Le containermssp-app utilise l’entrypoint
docker/next-app/entrypoint.sh
qui :
- S’authentifie auprès de Vault via AppRole.
- Lit les secrets (
postgres_password,redis_password,auth_secret, …). - Reconstruit
DATABASE_URL,REDIS_URL, exporte les autres vars. exec nodepour lancer Next.js (PID 1).
docker exec.
docker exec lance un nouveau process indépendant qui hérite uniquement de
l’env défini par les directives ENV du Dockerfile et les --env de docker run / docker compose. Pour mssp-app ça veut dire :
DATABASE_URL=postgresql://mssp:@postgres:5432/mssp_platform(password vide)REDIS_URL=redis://:@redis:6379(idem)- AUTH_SECRET, ENCRYPTION_KEY : non défini
Workaround : lire /proc/1/environ
PID 1 expose son env complet (post-Vault) via /proc/1/environ (séparateur
\0). Lis-le et ré-exporte avant ta commande :
Boundaries
- Ne pas exporter ces vars dans ton shell host — elles fuitent dans
l’historique. Toujours rester dans le sub-shell
docker exec. - Ne pas echo / log les valeurs. Le log compose de l’incident montre que la
longueur de la string
DATABASE_URL(94 chars) suffit comme sanity check. /proc/1/environest lisible uniquement par le user qui owner PID 1. Dans un containermssp-apple user est généralementnodeou root selon l’image —docker execpartage le user par défaut, ça marche.
Quand utiliser
- One-shot ops :
prisma db push,prisma migrate deploy, scripts de migration ad-hoc. - Debug : reproduire un état runtime à l’identique pour tester une commande.
- Investigation incident.
Quand NE PAS utiliser
- Pour des opérations récurrentes : ajoute la commande comme un target
Makefile ou un script
npm run worker:fooqui sera exécuté par l’entrypoint normal, pas par exec. - Pour des commandes destructives sur prod : préférer un container ephemère dédié (cf. CLAUDE.md § Prisma 7 schema sync).
Liens
- Incident original : Sentry MSSP-PLATFORM-3 (2026-04-30, résolu)
- Code de l’entrypoint :
platform/docker/next-app/entrypoint.sh - Pattern Prisma 7 schema sync :
CLAUDE.mdsection “Prisma 7”