|
1 | | -# ---- deps ---- |
| 1 | +# Dockerfile |
2 | 2 | FROM node:20-alpine AS deps |
3 | 3 | WORKDIR /app |
4 | | -RUN apk add --no-cache openssl # für pnpm hooks/engines, schadet nicht |
5 | 4 | RUN npm install -g pnpm |
6 | 5 | COPY package.json pnpm-lock.yaml ./ |
7 | 6 | COPY prisma ./prisma |
8 | | -# vollständige Installation (dev + prod), damit wir bauen/generate können |
9 | | -RUN pnpm install --frozen-lockfile |
| 7 | +RUN pnpm install |
| 8 | + |
10 | 9 |
|
11 | | -# ---- builder ---- |
12 | 10 | FROM node:20-alpine AS builder |
13 | 11 | WORKDIR /app |
14 | 12 | RUN npm install -g pnpm |
15 | 13 | COPY . . |
16 | 14 | COPY --from=deps /app/node_modules ./node_modules |
17 | | -# Prisma-Client für Alpine generieren (zieht die linux-musl Engines) |
18 | | -RUN pnpm prisma generate |
19 | | -# Next bauen |
20 | | -RUN pnpm build |
21 | | -# Für schlankes Prod-Image: nur prod-deps behalten |
22 | | -RUN pnpm prune --prod |
| 15 | +ARG SECRET |
| 16 | +ARG DATABASE_URL |
| 17 | +ARG NEXT_PUBLIC_URL |
| 18 | +ARG NEXT_PUBLIC_PRICE_POOL |
| 19 | +ENV SECRET=$SECRET |
| 20 | +ENV DATABASE_URL=$DATABASE_URL |
| 21 | +ENV NEXT_PUBLIC_URL=$NEXT_PUBLIC_URL |
| 22 | +ENV NEXT_PUBLIC_PRICE_POOL=$NEXT_PUBLIC_PRICE_POOL |
| 23 | +RUN pnpm run build |
23 | 24 |
|
24 | | -# ---- prod ---- |
25 | 25 | FROM node:20-alpine AS prod |
26 | 26 | WORKDIR /app |
27 | | -# Laufzeit-Abhängigkeiten |
28 | | -RUN apk add --no-cache openssl libc6-compat |
29 | | -# App-Dateien |
30 | 27 | COPY --from=builder /app/public ./public |
31 | | -COPY --from=builder /app/.next ./.next |
32 | 28 | COPY --from=builder /app/prisma ./prisma |
| 29 | +COPY --from=builder /app/.next ./.next |
| 30 | +COPY --from=builder /app/node_modules ./node_modules |
33 | 31 | COPY --from=builder /app/package.json ./package.json |
34 | 32 | COPY --from=builder /app/pnpm-lock.yaml ./pnpm-lock.yaml |
35 | | -# Nur Produktions-Node-Modules übernehmen (schlank) |
36 | | -COPY --from=builder /app/node_modules ./node_modules |
37 | 33 | RUN npm install -g pnpm |
38 | | -# Start: dein package.json "start" macht `prisma migrate deploy && next start` |
39 | | -EXPOSE 3000 |
40 | 34 | CMD ["pnpm", "run", "start"] |
| 35 | + |
| 36 | + |
0 commit comments