FROM python:3.12-alpine

WORKDIR /app

# Runtime deps:
#   - cairo provides libcairo so cairosvg can rasterise SVG → PNG.
#   - ttf-liberation gives Liberation Sans Bold at
#     /usr/share/fonts/liberation/LiberationSans-Bold.ttf — exactly where Arch
#     installs it, so dev (shanks) and prod (this container) render with the
#     same font and the posters come out identical.
RUN apk add --no-cache \
        cairo \
        ttf-liberation

# All pip deps ship musllinux wheels — no build-deps needed.
# numpy is pulled in by models/geo_json/geometry.py for vector ops at import time.
RUN pip install --no-cache-dir \
        fastapi \
        uvicorn \
        python-slugify \
        pillow \
        cairosvg \
        numpy

COPY cdn-api.py circuits_service.py ergast_service.py posters_service.py ./
COPY models/ ./models/
COPY circuits/ ./circuits/

EXPOSE 8000

CMD ["uvicorn", "cdn-api:app", "--host", "0.0.0.0", "--port", "8000"]
