FROM python:3.12-slim AS base ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 WORKDIR /app COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt \ && groupadd --system app && useradd --system --gid app app \ && mkdir -p /data && chown app:app /data FROM base AS api COPY --chown=app:app src/backend/main.py ./ COPY --chown=app:app src/backend/admin.py ./ COPY --chown=app:app src/backend/schedule ./schedule USER app EXPOSE 8000 CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "1"] FROM base AS frontend COPY --chown=app:app src/frontend/main.py frontend/main.py COPY --chown=app:app src/frontend/admin.html frontend/admin.html COPY --chown=app:app src/frontend/static frontend/static USER app EXPOSE 8080 CMD ["uvicorn", "frontend.main:app", "--host", "0.0.0.0", "--port", "8080"]