| # Build stage | |
| FROM node:20-alpine AS builder | |
| WORKDIR /app | |
| # Copy all source files | |
| COPY . . | |
| # Install dependencies and build the app | |
| RUN npm install | |
| RUN npm run build | |
| # Production stage | |
| FROM node:20-alpine | |
| WORKDIR /app | |
| # Install only production dependencies | |
| COPY package*.json ./ | |
| RUN npm install --omit=dev | |
| # Copy compiled files from builder stage | |
| COPY --from=builder /app/dist ./dist | |
| # Hugging Face runs containers with user ID 1000 | |
| RUN chown -R 1000:1000 /app | |
| USER 1000 | |
| ENV PORT=7860 | |
| ENV NODE_ENV=production | |
| EXPOSE 7860 | |
| CMD ["node", "dist/server.cjs"] | |