# syntax=docker/dockerfile:1
# Aether API - FastAPI + Gunicorn
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.11

LABEL maintainer="Scott Idem <scott.idem@oneskyit.com>"

# 1. Install OS dependencies FIRST.
# These are the slowest to install and change the least.
# Doing this before WORKDIR or any COPY ensures maximum caching.
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    imagemagick ffmpeg curl poppler-utils && \
    rm -rf /var/lib/apt/lists/*

# 2. Set the working directory
WORKDIR /srv/aether_api

# 3. Install Python requirements
# We only copy requirements.txt first to keep the pip install layer cached
# as long as the dependencies themselves don't change.
COPY requirements.txt /tmp/requirements.txt
RUN pip install --no-cache-dir -r /tmp/requirements.txt

# 4. Create a reference of actual installed versions
RUN pip freeze > /tmp/aether_fastapi_requirements_current.txt

# NOTE: The application source is mounted as a volume in docker-compose.yml
# for real-time development. We don't COPY the source here to keep the
# image generic and the build near-instant when code changes.

# Docker health check — verifies DB + Redis connectivity via the /health route.
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
    # CMD curl -f http://localhost/health || exit 1
    CMD curl -f http://localhost:5005/health || exit 1

CMD ["gunicorn", "--conf", "/conf/gunicorn_fastapi_conf.py"]
