الملفات
2026-07-26 19:45:13 +03:00

27 أسطر
904 B
Bash

#!/bin/sh
# Entrypoint: run the collector in the background, serve the dashboard in the
# foreground. The collector writes into the served directory, so the page can
# fetch data/metrics.json from the same origin — no CORS, no second service.
set -eu
WEB_ROOT="${WEB_ROOT:-/app/dashboard}"
PORT="${PORT:-8080}"
mkdir -p "$WEB_ROOT/data"
# Keep the collector alive: if it ever exits, restart it after a short pause
# rather than leaving the dashboard serving frozen data.
(
while true; do
python /app/collector/collect.py || echo "[start.sh] collector exited, restarting in 10s" >&2
sleep 10
done
) &
COLLECTOR_PID=$!
# Stop both processes on SIGTERM/SIGINT so the container shuts down promptly.
trap 'kill "$COLLECTOR_PID" 2>/dev/null || true; exit 0' TERM INT
echo "[start.sh] serving $WEB_ROOT on port $PORT"
exec python -m http.server "$PORT" --directory "$WEB_ROOT" --bind 0.0.0.0