# Build stage FROM node:18-alpine as builder WORKDIR /app # Copy dependency files COPY package*.json ./ # Install dependencies RUN npm ci --prefer-offline --no-audit # Copy source code COPY . . # Build application RUN npm run build # Production stage FROM node:18-alpine WORKDIR /app # Copy built application from builder COPY --from=builder --chown=node:node /app/.next ./.next COPY --from=builder --chown=node:node /app/public ./public COPY --from=builder --chown=node:node /app/node_modules ./node_modules COPY --from=builder --chown=node:node /app/package*.json ./ COPY --from=builder --chown=node:node /app/next.config.js ./ # Set environment ENV NODE_ENV=production \ NEXT_TELEMETRY_DISABLED=1 # Switch to non-root user USER node # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \ CMD wget --quiet --tries=1 --spider http://localhost:7860/ || exit 1 EXPOSE 7860 CMD ["npm", "start", "--", "-p", "7860"]