Spaces:
Sleeping
Sleeping
| # syntax=docker/dockerfile:1 | |
| ######################## | |
| # 1. Runtime stage | |
| ######################## | |
| FROM python:3.10-slim AS runtime | |
| # ββ Environment hygiene ββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ENV PYTHONDONTWRITEBYTECODE=1 \ | |
| PYTHONUNBUFFERED=1 \ | |
| PIP_DISABLE_PIP_VERSION_CHECK=1 \ | |
| PIP_NO_CACHE_DIR=1 \ | |
| # Streamlit: suppress browser launch & telemetry inside container | |
| STREAMLIT_BROWSER_GATHER_USAGE_STATS=false \ | |
| STREAMLIT_SERVER_HEADLESS=true | |
| # ββ System deps ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| RUN apt-get update && \ | |
| apt-get install -y --no-install-recommends \ | |
| git build-essential \ | |
| openjdk-17-jre-headless \ | |
| curl \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # ββ Python deps ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| WORKDIR /app | |
| COPY requirements.txt . | |
| RUN pip install --upgrade pip && pip install -r requirements.txt \ | |
| && pip install streamlit | |
| # ββ Project code ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| COPY . . | |
| # ββ Default entrypoint β Streamlit dashboard βββββββββββββββββββββββββββββ | |
| EXPOSE 8501 | |
| ENTRYPOINT ["streamlit", "run", "scripts/dashboard.py", "--server.port", "8501", "--server.address", "0.0.0.0"] | |
| ######################## | |
| # 2. Dev / CI stage | |
| ######################## | |
| FROM runtime AS dev | |
| # Extra tooling for development & CI | |
| RUN pip install \ | |
| black isort flake8 pytest \ | |
| mkdocs-material | |
| # Default to an interactive shell | |
| CMD ["/bin/bash"] | |
| ########################################################################### | |
| # Build / run cheat-sheet # | |
| # ----------------------------------------------------------------------- # | |
| # Production container (dashboard): # | |
| # docker build -t rag-eval . # | |
| # docker run -p 8501:8501 rag-eval # | |
| # # | |
| # Alternative CLI usage: # | |
| # docker run --rm rag-eval python scripts/run_experiments.py --help # | |
| # # | |
| # Development container (with lint/test/docs tools): # | |
| # docker build -t rag-eval-dev --target dev . # | |
| # docker run --rm -it rag-eval-dev # | |
| ########################################################################### | |