| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| ARG PYTHON_VERSION=3.11 |
|
|
| |
| |
| |
| FROM python:${PYTHON_VERSION}-slim AS builder |
|
|
| ENV PIP_DISABLE_PIP_VERSION_CHECK=1 \ |
| PIP_NO_CACHE_DIR=0 \ |
| PYTHONDONTWRITEBYTECODE=1 \ |
| PYTHONUNBUFFERED=1 |
|
|
| |
| RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ |
| --mount=type=cache,target=/var/lib/apt,sharing=locked \ |
| apt-get update && apt-get install -y --no-install-recommends \ |
| build-essential git ca-certificates libmagic1 |
|
|
| WORKDIR /build |
| COPY requirements.txt ./ |
|
|
| RUN --mount=type=cache,target=/root/.cache/pip,sharing=locked \ |
| pip install --prefix=/install -r requirements.txt |
|
|
| |
| |
| |
| FROM python:${PYTHON_VERSION}-slim AS runtime |
|
|
| LABEL org.opencontainers.image.title="docsifer" \ |
| org.opencontainers.image.description="Document β Markdown service powered by MarkItDown" \ |
| org.opencontainers.image.licenses="MIT" \ |
| org.opencontainers.image.source="https://github.com/lh0x00/docsifer" |
|
|
| ENV PYTHONUNBUFFERED=1 \ |
| PYTHONDONTWRITEBYTECODE=1 \ |
| PIP_DISABLE_PIP_VERSION_CHECK=1 \ |
| OMP_NUM_THREADS=2 \ |
| MKL_NUM_THREADS=2 \ |
| TOKENIZERS_PARALLELISM=false \ |
| HF_HOME=/home/user/.cache/huggingface \ |
| XDG_CACHE_HOME=/home/user/.cache \ |
| TMPDIR=/tmp \ |
| DOCSIFER_TMP_DIR=/tmp \ |
| DOCSIFER_LOG_JSON=true \ |
| DOCSIFER_ENVIRONMENT=production \ |
| PORT=7860 |
|
|
| |
| |
| |
| |
| RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ |
| --mount=type=cache,target=/var/lib/apt,sharing=locked \ |
| apt-get update && apt-get install -y --no-install-recommends \ |
| libjemalloc2 libmagic1 ffmpeg ca-certificates curl |
|
|
| ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2 |
|
|
| |
| RUN useradd -m -u 1000 user |
| USER user |
| WORKDIR /home/user/app |
|
|
| |
| COPY --from=builder /install /usr/local |
|
|
| |
| COPY --chown=user . . |
|
|
| |
| RUN mkdir -p "$HF_HOME" "$XDG_CACHE_HOME" |
|
|
| EXPOSE 7860 |
|
|
| HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \ |
| CMD curl -fsS "http://127.0.0.1:${PORT}/v1/healthz" >/dev/null || exit 1 |
|
|
| CMD ["uvicorn", "docsifer.main:app", \ |
| "--host", "0.0.0.0", \ |
| "--port", "7860", \ |
| "--proxy-headers", \ |
| "--forwarded-allow-ips", "*"] |
|
|