diff --git a/csa-dashboard/Dockerfile b/csa-dashboard/Dockerfile index 4a3d022..61d6a94 100644 --- a/csa-dashboard/Dockerfile +++ b/csa-dashboard/Dockerfile @@ -1,27 +1,41 @@ -# Build Stage +# ---------- BUILD STAGE ---------- FROM node:20 AS builder WORKDIR /app +# Copy only package files first COPY package*.json ./ + +# Install ALL deps (dev + prod) RUN npm install +# Copy source code COPY . . + +# Build Next.js RUN npm run build -# Production Stage - HANYA FILE BUILD STATIC -FROM node:20-alpine +# Remove devDependencies, keep only production deps +RUN npm prune --omit=dev + + +# ---------- PRODUCTION STAGE ---------- +FROM node:20-alpine AS runner WORKDIR /app +ENV NODE_ENV=production -# install dependencies production only -COPY package*.json ./ -RUN npm install --omit=dev +# Copy production deps only +COPY --from=builder /app/node_modules ./node_modules -# copy hasil build -COPY --from=builder /app/build ./build -# atau untuk Next.js: COPY --from=builder /app/.next ./ .next +# Copy minimal runtime files +COPY --from=builder /app/package*.json ./ +COPY --from=builder /app/.next ./.next +COPY --from=builder /app/next.config.ts ./next.config.ts +# Ownership fix (optional but recommended) RUN chown -R node:node /app + +# Switch to built-in non-root user USER node EXPOSE 3000 -CMD ["npm", "start"] \ No newline at end of file +CMD ["npm", "start"]