chat-with-your-data / Dockerfile
sanchitshaleen
Initial deployment of RAG with Gemma-3 to Hugging Face Spaces
573e464
FROM python:3.12-slim-bookworm
# Install system dependencies for Docling, graphics rendering, OCR, and ColPali
RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1 \
libglib2.0-0 \
libsm6 \
libxext6 \
libxrender-dev \
libgomp1 \
tesseract-ocr \
libopencv-dev \
&& rm -rf /var/lib/apt/lists/*
# Copy the application files
COPY server/ /fastAPI/
COPY assets/ /streamlit/assets/
COPY app.py /streamlit/app.py
COPY server/logger.py /streamlit/logger.py
# Copy streamlit config directory (create if it doesn't exist)
RUN mkdir -p /streamlit/.streamlit
COPY .streamlit/ /streamlit/.streamlit/
# Copy requirements
COPY requirements.txt /temp_files/requirements.txt
# Add entry point script
COPY entrypoint.sh /entrypoint.sh
# Create a non-root user and group
RUN useradd -m appuser
# Set permissions so appuser owns what it needs
RUN chmod +x /entrypoint.sh && \
chown -R appuser:appuser /fastAPI /streamlit /temp_files /entrypoint.sh /tmp
# Switch to non-root user
USER appuser
WORKDIR /temp_files
ENV PATH="/home/appuser/.local/bin:${PATH}"
# Install dependencies:
RUN python -m pip install --upgrade pip
RUN pip install --no-cache-dir --prefer-binary -r requirements.txt
# Switch back to root briefly to clean up temp files
WORKDIR /fastAPI
USER root
RUN rm -rf /temp_files && pip cache purge
USER appuser
# EXPOSE PORTS
# dev -> EXPOSE 8000, 8501, 11434
# deploy -> EXPOSE 7860
# Start entrypoint
CMD ["/entrypoint.sh"]