5883565b87
- New endpoints: /api/v1/convert, /api/v1/extract, /api/v1/segment, /api/v1/ocr, /api/v1/table_rec, /api/v1/marker (deprecated), /api/v1/create-document, /api/v1/files/*, /api/v1/thumbnails - Async submit-and-poll pattern matching Datalab API spec - X-API-Key authentication via API_KEY env var - Filesystem-based request store for multi-worker support - OCR_BACKEND=deepseek mode: uses deepseek-ocr via ollama for OCR (prompt: <|grounding|>Free OCR.) - build_options() now propagates output_format to parsed_opts - Fixed docs page CSS curly brace conflict with .format() - Renamed marker_endpoint_referece.md -> marker_endpoint_reference.md - Containerfile: added poppler-utils, pandoc; 3 gunicorn workers - gunicorn.conf: post_fork hook for background worker threads
81 lines
2.8 KiB
Docker
81 lines
2.8 KiB
Docker
# ===== 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"]
|