29 lines
946 B
Docker
29 lines
946 B
Docker
# =========================================================
|
|
# Stage 1: Build React/Vite
|
|
# =========================================================
|
|
FROM node:22-alpine AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
COPY frontend-prep/package.json frontend-prep/package-lock.json* ./
|
|
RUN npm ci --ignore-scripts
|
|
|
|
COPY frontend-prep/ .
|
|
RUN npm run build
|
|
|
|
# =========================================================
|
|
# Stage 2: Caddy — SPA static server (TLS terminé par Traefik)
|
|
# =========================================================
|
|
FROM caddy:alpine AS runtime
|
|
|
|
# Retire la file capability CAP_NET_BIND_SERVICE — incompatible avec
|
|
# allowPrivilegeEscalation: false. On écoute sur 8080 à la place.
|
|
RUN apk add --no-cache libcap && setcap -r /usr/bin/caddy && apk del libcap
|
|
|
|
COPY helm/frontend/Caddyfile /etc/caddy/Caddyfile
|
|
COPY --from=builder /app/dist /srv
|
|
|
|
EXPOSE 8080
|
|
|
|
CMD ["caddy", "run", "--config", "/etc/caddy/Caddyfile", "--adapter", "caddyfile"]
|