# ===== containerfile (podman & docker) for marker-api on this host  =====
#
# Targets AMD Radeon 8060S (GFX1151) with ROCm 7.2 native PyTorch 2.9.1.
# Ollama for OCR is on localhost:11435.
# Removed gfx906 base (Vega20) — now uses rocm/pytorch which natively supports gfx1151.

FROM rocm/pytorch:rocm7.2.4_ubuntu24.04_py3.12_pytorch_release_2.9.1

# install system deps & remove system-installed python3-blinker to avoid pip upgrade conflicts
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        curl ca-certificates tini procps git gcc g++ zlib1g-dev libjpeg-dev \
        libpango-1.0-0 libharfbuzz0b libpangoft2-1.0-0 \
        poppler-utils pandoc && \
    apt-get remove -y python3-blinker || true && \
    rm -rf /var/lib/apt/lists/*

# ---- runtime ----
RUN groupadd -r marker && (groupadd -r render || true) && (groupadd -r video || true) && useradd -r -g marker -G render,video marker && \
    mkdir -p /app/conversion_results /app/uploads /app/.cache && \
    chown -R marker:marker /app

WORKDIR /app

# ---- deps ----
COPY marker/ /app/marker/

# rocm/pytorch base already includes ROCm torch 2.9.1.
# Use --extra-index-url so pip prefers ROCm builds if torch gets reinstalled.
RUN pip install --no-cache-dir --break-system-packages \
    --extra-index-url https://download.pytorch.org/whl/rocm7.2 \
    -e "/app/marker[full]" && \
    pip install --no-cache-dir --break-system-packages flask gunicorn

# ---- font: download GoNotoCurrent-Regular.ttf at build time ----
RUN mkdir -p /app/marker/static/fonts && \
    curl -sL -o /app/marker/static/fonts/GoNotoCurrent-Regular.ttf \
    "https://models.datalab.to/artifacts/GoNotoCurrent-Regular.ttf" && \
    chown marker:marker /app/marker/static/fonts/GoNotoCurrent-Regular.ttf

# ---- final image ----
COPY app.py           /app/
COPY request_store.py /app/
COPY deepseek_ocr.py  /app/
COPY gunicorn.conf.py /app/
COPY entrypoint.sh    /app/entrypoint.sh

RUN chmod +x /app/entrypoint.sh

ENV HOME=/app
ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1
ENV MARKER_OUTPUT_DIR=/app/conversion_results
ENV UPLOAD_DIR=/app/uploads
ENV RESULTS_DIR=/app/conversion_results
ENV SELF_URL=http://localhost:8001
ENV OLLAMA_HOST=http://localhost:11435
ENV DEESEEK_OCR_MODEL=deepseek-ocr
ENV AMD_COMPUTE=true
ENV TORCH_DEVICE=
ENV MODEL_DTYPE=float32
ENV PORT=8001
ENV HOST=0.0.0.0
ENV LLM_SERVICE=marker.services.openai.OpenAIService
ENV USE_LLM=false
ENV OPENAI_BASE_URL=http://localhost:11435/v1
ENV OPENAI_MODEL=
ENV OCR_BACKEND=marker
ENV DEEPSEEK_OLLAMA_HOST=http://localhost:11434
ENV DEEPSEEK_OCR_MODEL=deepseek-ocr:latest
ENV DEEPSEEK_OCR_PROMPT="<|grounding|>Free OCR."
ENV API_KEY=
ENV GUNICORN_WORKERS=3

USER marker

EXPOSE 8001

ENTRYPOINT ["/app/entrypoint.sh"]
CMD ["gunicorn", "-c", "gunicorn.conf.py", "app:app_instance"]
