# Multi-stage build für Antragstracker Hagen # Stage 1: Frontend Build FROM node:20-alpine AS frontend-build WORKDIR /app/frontend COPY frontend/package*.json ./ RUN npm ci COPY frontend/ ./ RUN npm run build # Stage 2: Backend + Frontend FROM python:3.12-slim WORKDIR /app # System dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ curl \ && rm -rf /var/lib/apt/lists/* # Python dependencies COPY backend/requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt # Backend code COPY backend/src/ ./src/ # Frontend static files (from build stage) COPY --from=frontend-build /app/frontend/build ./static # Data directory (will be mounted as volume) RUN mkdir -p /app/data # Environment ENV PYTHONPATH=/app/src ENV DATABASE_PATH=/app/data/tracker.db EXPOSE 8000 # Run with uvicorn CMD ["uvicorn", "tracker.main:app", "--host", "0.0.0.0", "--port", "8000"]