docker speeeeed

This commit is contained in:
2025-12-18 20:45:37 +01:00
parent c63a348e6b
commit a4a9d79c4c

View File

@@ -1,38 +1,39 @@
# 1. Base Image # 1. Base Image: Wir nehmen "slim" statt "alpine" (baut oft schneller)
FROM node:20-alpine AS base FROM node:20-slim AS base
RUN corepack enable && corepack prepare pnpm@latest --activate
# 2. Dependencies Stage # Pnpm Setup
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable
# 2. Dependencies Stage (mit Cache!)
FROM base AS deps FROM base AS deps
RUN apk add --no-cache libc6-compat
WORKDIR /app WORKDIR /app
COPY package.json pnpm-lock.yaml ./
# Config setzen um Script-Warnungen zu umgehen
RUN pnpm config set dedupe-peer-dependents false
RUN pnpm install --frozen-lockfile --unsafe-perm
# 3. Builder Stage COPY package.json pnpm-lock.yaml ./
# TRICK 1: Cache Mount für pnpm store
# Das verhindert, dass Pakete jedes Mal neu aus dem Internet geladen werden
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
pnpm install --frozen-lockfile --unsafe-perm
# 3. Builder Stage (mit Cache!)
FROM base AS builder FROM base AS builder
WORKDIR /app WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules COPY --from=deps /app/node_modules ./node_modules
COPY . . COPY . .
# --- NEU HINZUFÜGEN: START --- # Environment Variablen für Build
# Wir müssen die Variablen als Build-Argumente definieren
ARG NEXT_PUBLIC_SUPABASE_URL ARG NEXT_PUBLIC_SUPABASE_URL
ARG NEXT_PUBLIC_SUPABASE_ANON_KEY ARG NEXT_PUBLIC_SUPABASE_ANON_KEY
ARG GEMINI_API_KEY
# Und sie als Environment-Variablen für den Build-Prozess setzen
ENV NEXT_PUBLIC_SUPABASE_URL=$NEXT_PUBLIC_SUPABASE_URL ENV NEXT_PUBLIC_SUPABASE_URL=$NEXT_PUBLIC_SUPABASE_URL
ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=$NEXT_PUBLIC_SUPABASE_ANON_KEY ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=$NEXT_PUBLIC_SUPABASE_ANON_KEY
ENV GEMINI_API_KEY=$GEMINI_API_KEY
# --- NEU HINZUFÜGEN: ENDE ---
ENV NEXT_TELEMETRY_DISABLED 1 ENV NEXT_TELEMETRY_DISABLED 1
RUN pnpm run build # TRICK 2: Cache Mount für Next.js Cache (.next/cache)
# Das ist der wichtigste Teil! Next.js muss nicht alles neu kompilieren.
RUN --mount=type=cache,target=/app/.next/cache \
pnpm run build
# 4. Runner Stage # 4. Runner Stage
FROM base AS runner FROM base AS runner