FROM node:24-alpine # Set working directory WORKDIR /app # Install system dependencies RUN apk add --no-cache \ python3 \ make \ g++ \ git # Copy package files COPY package*.json ./ # Install dependencies RUN npm ci --only=production # Download Brainy models for offline operation RUN npm run download-models # Copy application code COPY . . # Create logs directory RUN mkdir -p logs # Create non-root user RUN addgroup -g 1001 -S nodejs && \ adduser -S brainy -u 1001 -G nodejs # Change ownership RUN chown -R brainy:nodejs /app USER brainy # Expose port EXPOSE 3000 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \ CMD node -e "fetch('http://localhost:3000/health/liveness').then(r=>r.ok?process.exit(0):process.exit(1)).catch(()=>process.exit(1))" # Start the application CMD ["npm", "start"]