ITNovaML/PCAgentinAI
0
1# ══════════════════════════════════════════════════════════════════════2# PolicyBridge — HuggingFace Docker Space3# ══════════════════════════════════════════════════════════════════════4# Port : 7860 (HuggingFace requirement)5# DB : Clever Cloud MySQL via MYSQL_ADDON_* Secrets6# Models: .pkl files loaded from /app/models/ at runtime7# Workers: 1 — Clever Cloud free tier allows max 5 connections total8# ══════════════════════════════════════════════════════════════════════9FROM python:3.11-slim10 11# ── System dependencies ───────────────────────────────────────────────12RUN apt-get update && apt-get install -y --no-install-recommends \13 gcc \14 default-libmysqlclient-dev \15 pkg-config \16 && apt-get clean \17 && rm -rf /var/lib/apt/lists/*18 19# ── Working directory ─────────────────────────────────────────────────20WORKDIR /app21 22# ── Install Python dependencies ───────────────────────────────────────23COPY requirements.txt .24RUN pip install --no-cache-dir -r requirements.txt25 26# ── Copy application code ─────────────────────────────────────────────27COPY app.py .28COPY train_all_agents.py .29COPY agent1_ssn_kyc.py .30COPY agent2_property_risk.py .31COPY agent3_underwriting.py .32COPY agent4_pricing.py .33COPY agent5_issuance_orchestrator.py .34COPY agent6_audit.py .35COPY agent6_audit_integration.py .36COPY agent7_fnol_intake.py .37COPY agent8_coverage_verify.py .38COPY agent9_fraud_signal.py .39COPY agent10_severity.py .40COPY agent11_triage.py .41COPY agent12_riskradar.py .42 43# ── Copy frontend HTML apps ───────────────────────────────────────────44COPY pc_insurance_multiagent_v4.html .45COPY policybridge_app.html .46 47# ── Copy trained model files ──────────────────────────────────────────48COPY models/ ./models/49 50# ── Create Silver output directory ───────────────────────────────────51RUN mkdir -p silver/kyc_decisions \52 silver/property_risk \53 silver/uw_decisions \54 silver/pricing \55 silver/issued_policies56 57# ── Non-root user (HuggingFace security requirement) ──────────────────58RUN useradd -m -u 1000 appuser \59 && chown -R appuser:appuser /app60USER appuser61 62# ── Environment defaults ──────────────────────────────────────────────63ENV PORT=7860 \64 PYTHONUNBUFFERED=1 \65 PYTHONDONTWRITEBYTECODE=166 67# ── Expose port ───────────────────────────────────────────────────────68EXPOSE 786069 70# ── Health check ──────────────────────────────────────────────────────71HEALTHCHECK --interval=30s --timeout=10s --start-period=15s --retries=3 \72 CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:7860/status')" \73 || exit 174 75# ── Launch via Gunicorn ───────────────────────────────────────────────76# 1 worker = max 2 DB connections (pool_size=1 + max_overflow=1)77# Clever Cloud free tier: 5 max connections — this leaves 3 free78CMD ["gunicorn", \79 "--bind", "0.0.0.0:7860", \80 "--workers", "1", \81 "--timeout", "120", \82 "--keep-alive", "5", \83 "--log-level", "info", \84 "--access-logfile", "-", \85 "--error-logfile", "-", \86 "app:app"]87 