FROM python:3.13-slim

# Evitar que Python escrigui fitxers .pyc i bufferegi la sortida
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

# Crear directori de treball
WORKDIR /app

# Instal·lar dependències del sistema
# Nota: En entorns de producció, es recomana fixar les versions dels paquets
# (p. ex., curl=8.14.1-2+deb13u2) per garantir builds reproduïbles.
# Aquí ometem la versió per simplicitat i per evitar que l'exemple quedi obsolet.
RUN apt-get update && \
    apt-get install --yes --no-install-recommends curl && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# Copiar i instal·lar dependències de Python
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Crear usuari no privilegiat
RUN useradd --create-home --shell /bin/bash appuser

# Copiar el codi de l'aplicació
COPY --chown=appuser:appuser . .

# Canviar a usuari no privilegiat
USER appuser

# Documentar el port
EXPOSE 8000

# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
  CMD curl --fail http://localhost:8000/api/health || exit 1

# Comanda per defecte
CMD ["uvicorn", "myapi.asgi:application", "--host", "0.0.0.0", "--port", "8000"]
