FROM python:3.12-slim ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_DISABLE_PIP_VERSION_CHECK=1 \ HOME=/home/user \ HF_HUB_DISABLE_TELEMETRY=1 \ TOKENIZERS_PARALLELISM=false \ OMP_NUM_THREADS=2 \ MEDIRAG_DEVICE=cpu \ MEDIRAG_API_RETRIEVER=candidate-v5.1 \ MEDIRAG_API_GENERATOR=evidence-preview \ MEDIRAG_API_ALLOW_EXTERNAL_GENERATION=false \ MEDIRAG_API_ALLOW_UNREVIEWED_GENERATION=false RUN apt-get update \ && apt-get install --yes --no-install-recommends ca-certificates libgomp1 \ && rm -rf /var/lib/apt/lists/* \ && useradd --create-home --uid 1000 user WORKDIR /home/user/app COPY requirements.txt ./requirements.txt RUN python -m pip install --no-cache-dir --requirement requirements.txt COPY --chown=user:user scripts/download_deployment_models.py scripts/download_deployment_models.py RUN mkdir -p knowledge_base/models/huggingface \ && chown -R user:user /home/user/app USER user RUN python scripts/download_deployment_models.py \ --cache-dir knowledge_base/models/huggingface ENV HF_HUB_OFFLINE=1 \ TRANSFORMERS_OFFLINE=1 COPY --chown=user:user src/ src/ COPY --chown=user:user knowledge_base/ knowledge_base/ RUN sha256sum knowledge_base/indexes/medlineplus/multilingual-e5-small/embeddings.npy \ && wc -c knowledge_base/indexes/medlineplus/multilingual-e5-small/embeddings.npy \ && echo "451a017d1d53ef21f502a2effd9edf8932d39a55e584e6888b9e99529ea41c09 knowledge_base/indexes/medlineplus/multilingual-e5-small/embeddings.npy" \ | sha256sum --check EXPOSE 7860 CMD ["python", "-m", "uvicorn", "src.medirag.api:app", "--host", "0.0.0.0", "--port", "7860", "--workers", "1", "--proxy-headers", "--forwarded-allow-ips", "*"]