AntiAtropos / deploy /entrypoint.sh
div18
fix: Grafana 404 — Prometheus datasource missing route-prefix
a131547
#!/usr/bin/env bash
set -euo pipefail
FASTAPI_PID=""
PROMETHEUS_PID=""
GRAFANA_PID=""
NGINX_PID=""
MONITOR_PID=""
cleanup() {
for pid in "${MONITOR_PID}" "${NGINX_PID}" "${GRAFANA_PID}" "${PROMETHEUS_PID}" "${FASTAPI_PID}"; do
if [[ -n "${pid}" ]]; then
kill "${pid}" 2>/dev/null || true
fi
done
}
trap cleanup INT TERM EXIT
cd /app
# Source HF Spaces live-mode config if present (overrides Dockerfile defaults)
if [[ -f /app/.env.hf ]]; then
echo "Loading .env.hf..."
set -a
# shellcheck source=/dev/null
source /app/.env.hf
set +a
fi
uvicorn server.app:app --host 127.0.0.1 --port 8000 &
FASTAPI_PID=$!
/opt/prometheus/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/tmp/prometheus-data \
--web.listen-address=127.0.0.1:9090 \
--web.route-prefix=/prometheus \
--web.external-url=/prometheus \
&
PROMETHEUS_PID=$!
/opt/grafana/bin/grafana-server \
--homepath /opt/grafana \
--config /etc/grafana/grafana.ini \
cfg:default.paths.data=/var/lib/grafana \
cfg:default.paths.logs=/var/log/grafana \
cfg:default.paths.plugins=/var/lib/grafana/plugins \
cfg:default.paths.provisioning=/etc/grafana/provisioning \
&
GRAFANA_PID=$!
nginx -g "daemon off;" &
NGINX_PID=$!
monitor_children() {
while true; do
for pid in "${FASTAPI_PID}" "${PROMETHEUS_PID}" "${GRAFANA_PID}"; do
if ! kill -0 "${pid}" 2>/dev/null; then
echo "A backend service exited unexpectedly." >&2
kill "${NGINX_PID}" 2>/dev/null || true
exit 1
fi
done
sleep 2
done
}
monitor_children &
MONITOR_PID=$!
wait "${NGINX_PID}"