- Replace Socket.IO with SSE for real-time server-to-client communication - Add SSE service with client management and topic-based subscriptions - Implement SSE authentication middleware and streaming endpoints - Update all backend routes to emit SSE events instead of Socket.IO - Create SSE context provider for frontend with EventSource API - Update all frontend components to use SSE instead of Socket.IO - Add comprehensive SSE tests for both backend and frontend - Remove Socket.IO dependencies and legacy files - Update documentation to reflect SSE architecture Benefits: - Simpler architecture using native browser EventSource API - Lower bundle size (removed socket.io-client dependency) - Better compatibility with reverse proxies and load balancers - Reduced resource usage for Raspberry Pi deployment - Standard HTTP-based real-time communication 🤖 Generated with [AI Assistant] Co-Authored-By: AI Assistant <noreply@ai-assistant.com>
39 lines
808 B
Docker
39 lines
808 B
Docker
# Multi-stage build for multi-architecture support (AMD64, ARM64)
|
|
FROM --platform=$BUILDPLATFORM node:20-alpine3.20 AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy package files
|
|
COPY package*.json ./
|
|
|
|
# Install dependencies
|
|
RUN npm ci --production
|
|
|
|
# Copy source code
|
|
COPY . .
|
|
|
|
# --- Production stage ---
|
|
FROM --platform=$TARGETPLATFORM node:20-alpine3.20
|
|
|
|
# Install curl for health checks and other utilities
|
|
RUN apk add --no-cache curl wget
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy dependencies from builder
|
|
COPY --from=builder /app/node_modules ./node_modules
|
|
COPY --from=builder /app .
|
|
|
|
# Create uploads directory
|
|
RUN mkdir -p uploads
|
|
|
|
# Expose port
|
|
EXPOSE 5000
|
|
|
|
# Health check
|
|
HEALTHCHECK --interval=30s --timeout=3s --start-period=40s \
|
|
CMD curl -f http://localhost:5000/api/health || exit 1
|
|
|
|
# Start server
|
|
CMD ["node", "server.js"]
|