27 أسطر
904 B
Bash
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
|