FROM python:3.11-slim # ─── System deps ─────────────────────────────────────────────────────────────── RUN apt-get update && apt-get install -y \ wget curl tar adduser libfontconfig1 musl \ supervisor \ && rm -rf /var/lib/apt/lists/* # ─── Prometheus ──────────────────────────────────────────────────────────────── ENV PROMETHEUS_VERSION=2.51.2 RUN wget -q https://github.com/prometheus/prometheus/releases/download/v${PROMETHEUS_VERSION}/prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz \ && tar xzf prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz \ && mv prometheus-${PROMETHEUS_VERSION}.linux-amd64 /opt/prometheus \ && rm prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz # ─── Grafana ─────────────────────────────────────────────────────────────────── ENV GRAFANA_VERSION=10.4.2 RUN wget -q https://dl.grafana.com/oss/release/grafana-${GRAFANA_VERSION}.linux-amd64.tar.gz \ && tar xzf grafana-${GRAFANA_VERSION}.linux-amd64.tar.gz \ && mv grafana-v${GRAFANA_VERSION} /opt/grafana \ && rm grafana-${GRAFANA_VERSION}.linux-amd64.tar.gz # ─── Python exporter deps ────────────────────────────────────────────────────── RUN pip install --no-cache-dir prometheus-client requests # ─── Copy config files ───────────────────────────────────────────────────────── WORKDIR /app COPY prometheus.yml /opt/prometheus/prometheus.yml COPY grafana.ini /opt/grafana/conf/custom.ini COPY datasource.yml /opt/grafana/conf/provisioning/datasources/prometheus.yml COPY dashboard_provider.yml /opt/grafana/conf/provisioning/dashboards/provider.yml COPY ner_dashboard.json /opt/grafana/conf/provisioning/dashboards/ner_dashboard.json COPY ner_exporter.py /app/ner_exporter.py COPY groq_exporter.py /app/groq_exporter.py COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf COPY groq_dashboard.json /opt/grafana/conf/provisioning/dashboards/groq_dashboard.json # ─── Permissions ─────────────────────────────────────────────────────────────── RUN mkdir -p /opt/prometheus/data /opt/grafana/data \ && chmod -R 777 /opt/prometheus/data /opt/grafana/data # HF Spaces expose uniquement le port 7860 EXPOSE 7860 CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]