# syntax=docker/dockerfile:1 # Front Parenthèse (React + Vite) servi par nginx. Contexte de build : la racine du dépôt. # nginx sert frontend/dist et relaie l'API vers le service `api` (voir deploy/nginx.docker.conf). FROM node:24-alpine AS build WORKDIR /app COPY frontend/package.json frontend/package-lock.json ./ RUN npm ci COPY frontend/ ./ # Même origine : le front appelle /api, /trees, /auth, /health sur son propre hôte. # Une variable vide prime sur un éventuel frontend/.env (exclu du contexte de toute façon). ENV VITE_API_BASE_URL="" RUN npm run build FROM nginx:1.30-alpine # Adresse de l'API lue au démarrage du conteneur, `api:4000` par défaut (le service de docker-compose.yml). # À changer quand le nom `api` est déjà pris sur le réseau, comme sur Umbrel où les apps partagent un réseau. # L'image nginx passe les fichiers de /etc/nginx/templates par envsubst et n'y remplace que les variables # d'environnement définies : $host, $uri et les autres variables de nginx restent telles quelles. ENV API_UPSTREAM=api:4000 COPY deploy/nginx.docker.conf /etc/nginx/templates/default.conf.template RUN sed -i 's|http://api:4000|http://${API_UPSTREAM}|g' /etc/nginx/templates/default.conf.template \ && ! grep -q 'api:4000' /etc/nginx/templates/default.conf.template COPY --from=build /app/dist /usr/share/nginx/html EXPOSE 80