mirror of
https://github.com/IliesAllali/parenthese.git
synced 2026-11-06 23:32:08 +00:00
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>
33 lines
1.3 KiB
Docker
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
|