54 lines
1.8 KiB
Bash
54 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|
# ---------------------------------------------------------------------------
|
|
# appRobotBodyTracker — Build & Start ohne Portainer (per docker compose).
|
|
#
|
|
# ./deploy.sh bauen + starten (Default)
|
|
# ./deploy.sh logs Live-Logs
|
|
# ./deploy.sh stop stoppen + entfernen
|
|
# ./deploy.sh status Status
|
|
#
|
|
# Die robot.json ist im Image eingebacken (/app/config/robot.json) -> kein
|
|
# Volume noetig. Das Skript repariert vorher automatisch den haeufigen Fall,
|
|
# dass config/robot.json versehentlich ein (leeres) Verzeichnis ist.
|
|
# ---------------------------------------------------------------------------
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")"
|
|
|
|
PORT=8446
|
|
NAME=appRobotBodyTracker
|
|
|
|
case "${1:-up}" in
|
|
logs) exec docker compose logs -f ;;
|
|
stop) exec docker compose down ;;
|
|
status) exec docker compose ps ;;
|
|
esac
|
|
|
|
# --- robot.json muss eine DATEI sein (kein Phantom-Verzeichnis vom Bind-Mount) ---
|
|
if [ -d config/robot.json ]; then
|
|
echo ">> config/robot.json ist ein Verzeichnis -> repariere aus tests/data/robot.json"
|
|
rm -rf config/robot.json
|
|
cp tests/data/robot.json config/robot.json
|
|
fi
|
|
if [ ! -f config/robot.json ]; then
|
|
echo "FEHLER: config/robot.json fehlt."
|
|
echo "Fix: cp tests/data/robot.json config/robot.json"
|
|
exit 1
|
|
fi
|
|
|
|
echo ">> Build + Start ($NAME, Port $PORT)"
|
|
docker compose up -d --build
|
|
|
|
echo ">> Warte auf /v1/health ..."
|
|
for _ in $(seq 1 30); do
|
|
if curl -fsS "http://localhost:${PORT}/v1/health" >/dev/null 2>&1; then
|
|
echo ">> OK $(curl -fsS "http://localhost:${PORT}/v1/health")"
|
|
ip="$(hostname -I 2>/dev/null | awk '{print $1}')"
|
|
echo ">> API erreichbar unter: http://${ip:-<host>}:${PORT}"
|
|
echo ">> Logs: ./deploy.sh logs | Stop: ./deploy.sh stop"
|
|
exit 0
|
|
fi
|
|
sleep 1
|
|
done
|
|
echo ">> WARN: Health nicht erreicht. Logs ansehen: ./deploy.sh logs"
|
|
exit 1
|