diff --git a/admin-web/Dockerfile b/admin-web/Dockerfile new file mode 100644 index 0000000..77ea032 --- /dev/null +++ b/admin-web/Dockerfile @@ -0,0 +1,42 @@ +# ── Build stage ── +FROM node:20-alpine AS builder + +WORKDIR /app + +# Install dependencies (leveraging Docker layer cache) +COPY package.json package-lock.json ./ +RUN npm ci + +# Copy source and build +COPY . . +ENV NEXT_TELEMETRY_DISABLED=1 +RUN npm run build + +# ── Runtime stage ── +FROM node:20-alpine AS runner + +WORKDIR /app + +ENV NODE_ENV=production +ENV NEXT_TELEMETRY_DISABLED=1 + +# Create non-root user +RUN addgroup --system --gid 1001 nodejs && \ + adduser --system --uid 1001 nextjs + +# Copy standalone output from builder +COPY --from=builder /app/.next/standalone ./ +COPY --from=builder /app/.next/static ./.next/static +COPY --from=builder /app/public ./public + +# Set correct ownership +RUN chown -R nextjs:nodejs /app + +USER nextjs + +EXPOSE 3000 + +ENV PORT=3000 +ENV HOSTNAME="0.0.0.0" + +CMD ["node", "server.js"]