# Backend Dockerfile for Drone Detection System FROM node:18-alpine AS base # Install system dependencies RUN apk add --no-cache \ python3 \ make \ g++ \ curl \ dumb-init # Set working directory WORKDIR /app # Copy package files COPY package*.json ./ # Install dependencies RUN npm install --only=production && \ npm cache clean --force # Copy application code COPY . . # Create logs directory RUN mkdir -p logs # Create uploads directory for logos RUN mkdir -p uploads/logos # Create non-root user RUN addgroup -g 1001 -S nodejs && \ adduser -S nodejs -u 1001 # Set ownership RUN chown -R nodejs:nodejs /app # Switch to non-root user USER nodejs # Expose port EXPOSE 3001 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ CMD curl -f http://localhost:3001/api/health || exit 1 # Use dumb-init to handle signals properly ENTRYPOINT ["dumb-init", "--"] # Start the application CMD ["npm", "start"]