Spaces:
Sleeping
Sleeping
File size: 4,381 Bytes
b14c6e3 83165a7 b14c6e3 6608c49 b14c6e3 6608c49 b14c6e3 462788e b14c6e3 a7a32a6 62eaa59 b14c6e3 8061f1b b14c6e3 8add461 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | # ββ Adaptive Alert Triage β Optimised Dockerfile βββββββββββββββββββββββββββββ
#
# Key change vs previous version:
# - Installs ONLY core deps from pyproject.toml (no torch / stable-baselines3)
# - torch + stable-baselines3 are in the [train] optional group β NOT here
# - Build time: ~60-90s (was ~2200s pulling 2GB of PyTorch)
#
# Build:
# docker build -t adaptive-alert-triage:latest .
#
#
# Run server:
# docker run -p 7860:7860 adaptive-alert-triage:latest
#
# Run inference baseline:
# docker run --rm \
# -e API_BASE_URL="https://api.openai.com/v1" \
# -e MODEL_NAME="gpt-4o-mini" \
# -e HF_TOKEN="hf_..." \
# adaptive-alert-triage:latest \
# python inference.py --n 3
#
# Environment variables (set at runtime, not here):
# API_BASE_URL β LLM endpoint (default: https://api.openai.com/v1)
# MODEL_NAME β LLM model name (default: gpt-4o-mini)
# HF_TOKEN β Hugging Face / OpenAI API key
# PORT β Server port (default: 7860)
# ββ Base image ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
FROM python:3.11-slim
# ββ System dependencies βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc \
curl \
&& rm -rf /var/lib/apt/lists/*
# ββ Working directory βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
WORKDIR /app
# ββ Copy dependency manifest first (maximises Docker layer cache) βββββββββββββ
COPY pyproject.toml .
# ββ Upgrade pip/setuptools/wheel ββββββββββββββββββββββββββββββββββββββββββββββ
RUN pip install --no-cache-dir --upgrade pip setuptools wheel
RUN pip install huggingface_hub
# ββ Copy full project βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
COPY . .
# ββ Install ONLY core deps (no [train], no [viz], no [gemini]) ββββββββββββββββ
# This skips torch, stable-baselines3, matplotlib, seaborn, pandas, google-genai
# Those are only needed for local training/analysis β not the server or inference
RUN pip install --no-cache-dir -e .
# ββ Environment variables βββββββββββββββββββββββββββββββββββββββββββββββββββββ
ENV PYTHONUNBUFFERED=1
ENV PYTHONPATH=/app/src:/app
ENV PORT=7860
# ββ Expose port βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
EXPOSE 7860
# ββ Health check ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
HEALTHCHECK --interval=15s --timeout=5s --start-period=30s --retries=3 \
CMD curl -f http://localhost:${PORT}/health || exit 1
# ββ Add non-root user βββββββββββββββββββββββββββββββββββββββββββββββ
# Save a pristine copy of repo weights so cached HF weights can be overridden
# RUN cp -r /app/weights /app/weights_pristine 2>/dev/null || true
# RUN useradd -m -u 1000 appuser \
# && mkdir -p /app/weights /app/results /app/weights_pristine \
# && chown -R appuser:appuser /app
# USER appuser
# ββ Default command: start the FastAPI server βββββββββββββββββββββββββββββββββ
CMD ["sh", "-c", \
"python -m uvicorn adaptive_alert_triage.server:app \
--host 0.0.0.0 \
--port ${PORT:-7860} \
--workers 1 \
--log-level info"]
|