# 1. Install pip dependencies FROM python:3.12 AS builder WORKDIR /app RUN python3 -m venv .venv COPY backend/requirements.txt . RUN --mount=type=cache,target=/root/.cache/pip \ ./.venv/bin/pip3 install -r requirements.txt # 2. Runtime stage FROM python:3.12-slim AS runtime # 2.1. Non-root user WORKDIR /app RUN useradd -u 1000 app && \ chown -R app /app # 2.2. Copy content and create dirs COPY --chown=app backend . COPY --from=builder --chown=app /app/.venv .venv RUN mkdir -p /app/data /app/logs && \ chown -R app /app/data /app/logs && \ printf '#!/bin/sh\nexec /app/.venv/bin/python /app/admin_cli.py "$@"\n' > /usr/local/bin/admin-cli && \ chmod +x /usr/local/bin/admin-cli USER app # 3. Final command ENTRYPOINT exec ./.venv/bin/fastapi run --port ${PORT:-8300} main.py