FROM node:20-alpine AS frontend-builder WORKDIR /frontend COPY dashboard/package*.json ./ RUN npm install COPY dashboard ./ RUN npm run build FROM python:3.11-slim ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 ENV PORT=7860 WORKDIR /app RUN apt-get update && apt-get install -y --no-install-recommends \ libgl1 \ libglib2.0-0 \ libgomp1 \ && rm -rf /var/lib/apt/lists/* COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt COPY api ./api COPY agent ./agent COPY core ./core COPY inspection ./inspection COPY dashboard ./dashboard COPY models ./models COPY main.py ./main.py COPY live_camera.py ./live_camera.py COPY .env.example ./.env.example COPY README.md ./README.md COPY --from=frontend-builder /frontend/dist ./dashboard/dist EXPOSE 7860 CMD ["sh", "-c", "uvicorn api.main:app --host 0.0.0.0 --port ${PORT:-7860}"]