rag-system / Dockerfile
Joshua Sears
Pre-download ML models during Docker build to eliminate cold-start latency
41ac6b9
Raw
History Blame Contribute Delete
1.1 kB
FROM python:3.11-slim
# System deps for PDF/DOCX processing
RUN apt-get update && apt-get install -y --no-install-recommends \
libmagic1 \
poppler-utils \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Install Python deps (cached layer — split so model download layer is separate)
COPY hf_space/requirements.txt ./requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# Pre-download models into the image so cold starts don't re-download them.
# These layers are cached by Docker and reused on every container restart.
RUN python3 -c "from sentence_transformers import SentenceTransformer; SentenceTransformer('all-MiniLM-L6-v2')"
RUN python3 -c "from sentence_transformers import CrossEncoder; CrossEncoder('cross-encoder/ms-marco-MiniLM-L-6-v2')"
# Copy application code (after model download so code changes don't invalidate model cache)
COPY . .
# Create data directories
RUN mkdir -p /app/data/chroma_db /app/data
# HF Spaces requires port 7860
EXPOSE 7860
CMD ["streamlit", "run", "hf_space/app.py", "--server.port", "7860", "--server.address", "0.0.0.0"]