test / Dockerfile
Kirtan001's picture
Fresh Start: Clean Repo without binaries
ad06665
# Use an official lightweight Python image.
# https://hub.docker.com/_/python
FROM python:3.10-slim
# Set environment variables to prevent Python from writing pyc files to disc
# and buffering stdout and stderr.
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
# Install system dependencies required for some Python packages (like sentence-transformers/numpy).
RUN apt-get update && apt-get install -y \
build-essential \
curl \
git \
git-lfs \
&& git lfs install \
&& rm -rf /var/lib/apt/lists/*
# Set the working directory in the container.
WORKDIR /app
# Ensure src module is discoverable
ENV PYTHONPATH="${PYTHONPATH}:/app"
# Copy the requirements file first to leverage Docker cache.
COPY requirements.txt .
# Install Python dependencies.
RUN pip install --no-cache-dir -r requirements.txt
# Pre-download the embedding model to build it into the image.
# This prevents runtime timeouts and "black screens" on Hugging Face.
RUN python3 -c "from langchain_huggingface import HuggingFaceEmbeddings; HuggingFaceEmbeddings(model_name='BAAI/bge-small-en-v1.5')"
# Copy the rest of the application code.
COPY . .
RUN git lfs pull
RUN chmod +x start.sh
# Expose the port Streamlit runs on.
EXPOSE 8501
# Create a non-root user and switch to it (Security Best Practice).
RUN useradd -m -u 1000 appuser && chown -R appuser:appuser /app
USER appuser
# Healthcheck to ensure container is running.
HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health || exit 1
# Command to run the application.
# Command to run the application.
CMD ["./start.sh"]