69 lines
2.0 KiB
Docker
69 lines
2.0 KiB
Docker
FROM node:22-alpine AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
# Installer pnpm
|
|
RUN npm install -g pnpm
|
|
|
|
# Copier les fichiers de dépendances
|
|
COPY package.json pnpm-lock.yaml ./
|
|
COPY patches/ ./patches/
|
|
|
|
# Installer toutes les dépendances (y compris devDependencies pour le build)
|
|
RUN pnpm install --frozen-lockfile
|
|
|
|
# Copier les sources
|
|
COPY . .
|
|
|
|
# Variables d'environnement pour le build Vite (frontend)
|
|
# Ces valeurs sont overridées par les ARG du docker-compose au moment du build
|
|
ARG VITE_APP_ID=""
|
|
ARG VITE_OAUTH_PORTAL_URL=""
|
|
ARG VITE_APP_TITLE="SONUM"
|
|
ARG VITE_APP_LOGO=""
|
|
ARG VITE_ANALYTICS_ENDPOINT=""
|
|
ARG VITE_ANALYTICS_WEBSITE_ID=""
|
|
ARG VITE_FRONTEND_FORGE_API_KEY=""
|
|
ARG VITE_FRONTEND_FORGE_API_URL=""
|
|
|
|
ENV VITE_APP_ID=$VITE_APP_ID
|
|
ENV VITE_OAUTH_PORTAL_URL=$VITE_OAUTH_PORTAL_URL
|
|
ENV VITE_APP_TITLE=$VITE_APP_TITLE
|
|
ENV VITE_APP_LOGO=$VITE_APP_LOGO
|
|
ENV VITE_ANALYTICS_ENDPOINT=$VITE_ANALYTICS_ENDPOINT
|
|
ENV VITE_ANALYTICS_WEBSITE_ID=$VITE_ANALYTICS_WEBSITE_ID
|
|
ENV VITE_FRONTEND_FORGE_API_KEY=$VITE_FRONTEND_FORGE_API_KEY
|
|
ENV VITE_FRONTEND_FORGE_API_URL=$VITE_FRONTEND_FORGE_API_URL
|
|
|
|
# Build : Vite (frontend → dist/public) + esbuild (serveur → dist/index.js)
|
|
RUN pnpm build
|
|
|
|
# ── Stage production ──────────────────────────────────────────────────────────
|
|
FROM node:22-alpine AS production
|
|
|
|
WORKDIR /app
|
|
|
|
RUN npm install -g pnpm
|
|
|
|
# Copier les fichiers nécessaires
|
|
COPY package.json pnpm-lock.yaml ./
|
|
COPY patches/ ./patches/
|
|
|
|
# Installer toutes les dépendances (vite est requis au runtime par le serveur Express)
|
|
RUN pnpm install --frozen-lockfile
|
|
|
|
# Copier les artefacts de build
|
|
COPY --from=builder /app/dist ./dist
|
|
|
|
# Copier les fichiers de configuration et le seed
|
|
COPY drizzle.config.ts ./
|
|
COPY drizzle/ ./drizzle/
|
|
COPY seed-admin.mjs ./
|
|
COPY shared/ ./shared/
|
|
COPY server/ ./server/
|
|
|
|
EXPOSE 3000
|
|
|
|
# Démarrer le serveur et exécuter le seed admin
|
|
CMD node seed-admin.mjs && node dist/index.js
|