Files
IliesAllaliandClaude Opus 5.5 333a11e84b Docker : le front lit l'adresse de l'API dans API_UPSTREAM
Le conteneur web relayait l'API vers `api:4000`, écrit en dur. Sur un réseau
partagé entre plusieurs applications (Umbrel), ce nom peut appartenir à une autre.
L'adresse vient maintenant de API_UPSTREAM, `api:4000` par défaut : rien ne
change pour les installations existantes. L'image tout-en-un garde sa propre
configuration. La CI lance un second front qui joint l'API par le nom de son
conteneur et repasse le test de fumée.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 16:15:46 +02:00

33 lines
1.3 KiB
Docker

# 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