# ─────────────────────────────────────────────────────────────────────────────
# LangChain Chatbot Starter — Dockerfile
#
# Builds an image that serves the FastAPI chatbot API on port 8000.
#
# Build:
#   docker build -t demia-chatbot .
#
# Run (API server):
#   docker run -p 8000:8000 --env-file .env demia-chatbot
#
# Run (Streamlit UI):
#   docker run -p 8501:8501 --env-file .env demia-chatbot streamlit run app/app.py --server.port 8501 --server.address 0.0.0.0
#
# Swap the model at runtime without rebuilding:
#   docker run -p 8000:8000 -e LLM_PROVIDER=openai -e OPENAI_API_KEY=sk-... demia-chatbot
# ─────────────────────────────────────────────────────────────────────────────

FROM python:3.11-slim

# ── System dependencies ───────────────────────────────────────────────────────
RUN apt-get update && apt-get install -y --no-install-recommends \
        build-essential \
        curl \
    && rm -rf /var/lib/apt/lists/*

# ── Non-root user ─────────────────────────────────────────────────────────────
RUN useradd --create-home --shell /bin/bash appuser
WORKDIR /app

# ── Python dependencies (cached layer) ───────────────────────────────────────
COPY requirements.txt .
RUN pip install --no-cache-dir --upgrade pip \
    && pip install --no-cache-dir -r requirements.txt

# ── Application source ────────────────────────────────────────────────────────
COPY . .
RUN chown -R appuser:appuser /app

USER appuser

# ── Environment defaults (override with --env-file or -e flags) ───────────────
ENV LLM_PROVIDER=anthropic
ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1

# ── Default command: FastAPI via uvicorn ──────────────────────────────────────
EXPOSE 8000
CMD ["uvicorn", "api.main:app", "--host", "0.0.0.0", "--port", "8000"]
