Spaces:
Sleeping
Sleeping
| # Build stage | |
| FROM node:20-alpine AS builder | |
| WORKDIR /app | |
| # Copy package files | |
| COPY package.json package-lock.json* ./ | |
| # Install dependencies | |
| RUN npm ci | |
| # Copy source files | |
| COPY . . | |
| # Build the application | |
| RUN npm run build | |
| # Production stage | |
| FROM node:20-alpine AS runner | |
| WORKDIR /app | |
| # Set to production | |
| ENV NODE_ENV=production | |
| ENV NEXT_TELEMETRY_DISABLED=1 | |
| # Create non-root user for security | |
| RUN addgroup --system --gid 1001 nodejs | |
| RUN adduser --system --uid 1001 nextjs | |
| # Copy necessary files from builder | |
| COPY --from=builder /app/public ./public | |
| COPY --from=builder /app/.next/standalone ./ | |
| COPY --from=builder /app/.next/static ./.next/static | |
| # Set correct ownership | |
| RUN chown -R nextjs:nodejs /app | |
| # Switch to non-root user | |
| USER nextjs | |
| # Expose port (Hugging Face Spaces uses 7860) | |
| EXPOSE 7860 | |
| # Set port | |
| ENV PORT=7860 | |
| ENV HOSTNAME="0.0.0.0" | |
| # Start the application | |
| CMD ["node", "server.js"] | |