La construction échouait : `src/lib/env.ts` validait le contrat d'environnement à l'import, et `src/server/db.ts` ouvrait la connexion Prisma de même. Next.js évalue les modules serveur pendant la construction, où ni la base ni la clé n'existent — l'image exigeait donc les secrets de production pour être bâtie, c'est-à-dire de les confier au constructeur. C'était à l'envers : ce sont des valeurs d'exécution. Les deux sont désormais résolus à la première lecture. La garantie ne bouge pas : le premier appel utile arrive bien avant qu'une requête aboutisse, et échoue avec le même message. Éprouvé en construisant sans aucune variable, ce que fait exactement Docker. Les tests décrivaient l'ancien contrat — ils restauraient l'environnement avant de lire, ce qui ne prouvait plus rien une fois la lecture différée. Réécrits pour lire pendant que les valeurs sont posées, avec deux cas de plus : l'import seul n'exige rien, et la lecture d'une configuration absente échoue. Ajout d'un `.dockerignore`, absent jusqu'ici. `.env` en tête, et ce n'est pas un détail : il porte la clé de chiffrement et les mots de passe de la base, et copié dans le contexte il aurait fini dans une couche de l'image, lisible par quiconque la récupère. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Cr9dkEHwbDgkWPnyGj1Rjv
25 lines
474 B
Plaintext
25 lines
474 B
Plaintext
# Contexte de construction.
|
|
#
|
|
# `.env` en tête et ce n'est pas un détail : il porte la clé de chiffrement et
|
|
# les mots de passe de la base. Copié dans le contexte, il finirait dans une
|
|
# couche de l'image, lisible par quiconque la récupère.
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
|
|
node_modules
|
|
.next
|
|
.pgdata
|
|
storage
|
|
test-results
|
|
playwright-report
|
|
.git
|
|
.github
|
|
.claude
|
|
|
|
# Documents de travail : ils alourdissent le contexte sans servir au build.
|
|
Audit Combo
|
|
design
|
|
*.md
|
|
!README.md
|