Faire apparaitre votre nom, votre matricule et la date de build dans la borne. Ce qui prouve que votre image et celle de votre voisin de classe ne sont pas identiques.
La chaine ARG -> ENV -> NEXT_PUBLIC -> UI
Next.js a une regle particuliere : seules les variables d'environnement qui commencent par NEXT_PUBLIC_ sont injectees dans le bundle JavaScript cote client. Donc votre chaine doit etre :
ARG NOM_ETUDIANT dans le Dockerfile (etape de build)
ENV NEXT_PUBLIC_NOM_ETUDIANT=$NOM_ETUDIANT dans le Dockerfile (avant le npm run build pour qu'elle soit lue par le bundler)
- Dans le code React :
process.env.NEXT_PUBLIC_NOM_ETUDIANT
Modification du Dockerfile (etape builder)
Dockerfile - extrait builder
ARG NOM_ETUDIANT="Etudiant Inconnu"
ARG MATRICULE="0000000"
ARG BUILD_DATE="date-non-fournie"
ENV NEXT_PUBLIC_NOM_ETUDIANT=$NOM_ETUDIANT
ENV NEXT_PUBLIC_MATRICULE=$MATRICULE
ENV NEXT_PUBLIC_BUILD_DATE=$BUILD_DATE
RUN npm run build
Modification du composant React
Dans application/app/page.js, ajoutez en haut du composant PageBorneAccueil une banniere :
<div id="banniere-identification">
Borne d'accueil - {process.env.NEXT_PUBLIC_NOM_ETUDIANT} ({process.env.NEXT_PUBLIC_MATRICULE}) - build {process.env.NEXT_PUBLIC_BUILD_DATE}
</div>
Stylez ensuite #banniere-identification dans globals.css pour qu'elle apparaisse en haut de l'ecran (vert zoo, texte blanc, hauteur 40px par exemple).
Si vous mettez ENV apres npm run build, le bundle est compile sans vos variables et la banniere affiche undefined. L'ordre dans le Dockerfile compte.
Pour le scenario B (export statique), il faut absolument que les ENV soient definies avant le npm run build car le HTML genere fige les valeurs en clair. Apres le build, c'est trop tard.
Apres rebuild avec --build-arg NOM_ETUDIANT="Votre Nom", vous voyez votre nom dans la banniere quand vous ouvrez la borne dans le navigateur.