diff --git a/Dockerfile b/Dockerfile index 7ff1863a1..875c24f4e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,50 +1,36 @@ -# ===================================================== -# MyEasyCMS v2 — Production Dockerfile -# Multi-stage build for Next.js with pnpm -# ===================================================== - FROM node:22-alpine AS base RUN corepack enable && corepack prepare pnpm@latest --activate WORKDIR /app -# --- Dependencies stage --- +# --- Install deps --- FROM base AS deps COPY pnpm-lock.yaml pnpm-workspace.yaml package.json ./ -COPY apps/web/package.json ./apps/web/package.json -COPY packages/ ./packages/ +COPY apps/web/package.json ./apps/web/ +COPY apps/dev-tool/package.json ./apps/dev-tool/ COPY tooling/ ./tooling/ -RUN pnpm install --frozen-lockfile --prod=false +COPY packages/ ./packages/ +RUN pnpm install --frozen-lockfile -# --- Build stage --- +# --- Build --- FROM base AS builder -COPY --from=deps /app/node_modules ./node_modules -COPY --from=deps /app/packages/ ./packages/ +COPY --from=deps /app/ ./ COPY . . - -# Set build-time env vars ENV NEXT_TELEMETRY_DISABLED=1 ENV NEXT_PUBLIC_SITE_URL=https://myeasycms.de - +ENV NEXT_PUBLIC_SUPABASE_URL=placeholder +ENV NEXT_PUBLIC_SUPABASE_PUBLIC_KEY=placeholder RUN pnpm --filter web build -# --- Production stage --- -FROM node:22-alpine AS runner +# --- Run --- +FROM base AS runner WORKDIR /app - ENV NODE_ENV=production ENV NEXT_TELEMETRY_DISABLED=1 -RUN addgroup --system --gid 1001 nodejs -RUN adduser --system --uid 1001 nextjs - -# Copy built app -COPY --from=builder /app/apps/web/.next/standalone ./ -COPY --from=builder /app/apps/web/.next/static ./apps/web/.next/static -COPY --from=builder /app/apps/web/public ./apps/web/public +COPY --from=builder /app/ ./ +RUN addgroup --system --gid 1001 nodejs && adduser --system --uid 1001 nextjs USER nextjs -EXPOSE 3000 -ENV PORT=3000 -ENV HOSTNAME="0.0.0.0" -CMD ["node", "apps/web/server.js"] +EXPOSE 3000 +CMD ["pnpm", "--filter", "web", "start"]