### Image Docker "ext" (Next.js) – variables d'environnement et publication Cette image exécute l'app Next.js en mode production via `next start` et lit la configuration via les variables d'environnement exposées (préfixe `NEXT_PUBLIC_`). L'objectif est d'éviter toute dépendance à `localhost` dans les appels API : les URLs sont construites dynamiquement côté front à partir de ces variables. #### Variables d'environnement supportées - **NEXT_PUBLIC_BACK_API_PROTOCOL**: protocole de l'API (ex: `https://`) - **NEXT_PUBLIC_BACK_API_HOST**: hôte de l'API (ex: `api.example.com`) - **NEXT_PUBLIC_BACK_API_PORT**: port de l'API (ex: `443`) - **NEXT_PUBLIC_BACK_API_ROOT_URL**: racine (ex: `/` ou `/api`) - **NEXT_PUBLIC_BACK_API_VERSION**: version (ex: `v1`) - **NEXT_PUBLIC_FRONT_APP_HOST**: base publique du front (ex: `https://app.example.com`) - **NEXT_PUBLIC_FRONT_APP_PORT**: port front si nécessaire (ex: `443`) - **NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT** - **NEXT_PUBLIC_IDNOT_CLIENT_ID** - **NEXT_PUBLIC_IDNOT_BASE_URL** - **NEXT_PUBLIC_DOCAPOSTE_API_URL** - **NEXT_PUBLIC_HOTJAR_SITE_ID** - **NEXT_PUBLIC_HOTJAR_VERSION** - **NEXT_PUBLIC_4NK_URL** - **NEXT_PUBLIC_API_URL** - **NEXT_PUBLIC_DEFAULT_VALIDATOR_ID** - **NEXT_PUBLIC_DEFAULT_STORAGE_URLS** (liste séparée par des virgules) Notes: - Le front initialise ses variables via `next.config.js` et `_app.tsx`, ce qui alimente `FrontendVariables`. Les appels API utilisent ces valeurs et n'emploient pas `localhost`. - Les valeurs doivent être passées au conteneur au runtime (`docker run -e ...` ou manifest K8s via `env:`/`secretRef`). #### Construction de l'image (cible "ext") Prérequis: Docker BuildKit activé et agent SSH opérationnel pour cloner `le-coffre-resources` depuis `git.4nkweb.com`. 1. `cd /home/debian/lecoffre-front` 2. `export DOCKER_BUILDKIT=1` 3. `docker build --target ext --ssh default -t lecoffre/front:ext -f /home/debian/lecoffre-front/Dockerfile /home/debian/lecoffre-front` #### Exécution locale (validation) Exemple minimal (adapter les valeurs): ```bash docker run --rm -p 3000:3000 \ -e NEXT_PUBLIC_BACK_API_PROTOCOL=https:// \ -e NEXT_PUBLIC_BACK_API_HOST=api.example.com \ -e NEXT_PUBLIC_BACK_API_PORT=443 \ -e NEXT_PUBLIC_BACK_API_ROOT_URL=/ \ -e NEXT_PUBLIC_BACK_API_VERSION=v1 \ -e NEXT_PUBLIC_FRONT_APP_HOST=https://app.example.com \ -e NEXT_PUBLIC_4NK_URL=https://app.example.com \ lecoffre/front:ext ``` #### Publication via CI (git.4nkweb.com) - Le push d'image est effectué par la CI de `git.4nkweb.com` suite à un `git push`. - Définir le tag Docker dans le message de commit: `ci: docker_tag=ext` (fallback CI: `dev-test`). - La branche peut être utilisée par la CI comme tag en l’absence d’override.