53 lines
1.8 KiB
Bash
53 lines
1.8 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
# deploy-local.sh – Deploy DIESES Stacks, ausgeführt im Stack-Ordner auf dem Server.
|
|||
|
|
# Wird von Terraform aufgerufen, funktioniert aber genauso von Hand:
|
|||
|
|
#
|
|||
|
|
# scripts/deploy-local.sh Sperre prüfen, bauen/starten, auf gesund warten
|
|||
|
|
# scripts/deploy-local.sh --check-flat nur die Sperre prüfen (Terraform vor dem Kopieren)
|
|||
|
|
# scripts/deploy-local.sh --force Sperre ignorieren
|
|||
|
|
#
|
|||
|
|
# Sperre: Der Trader hält offene Positionen nur im Speicher. Ein Neustart mitten
|
|||
|
|
# im Trade = für diese Position kein BE und kein CANCEL mehr.
|
|||
|
|
|
|||
|
|
cd "$(dirname "$0")/.." || exit 1
|
|||
|
|
source ./deploy.conf
|
|||
|
|
|
|||
|
|
check_flat() {
|
|||
|
|
local n
|
|||
|
|
n=$(curl -s -m 10 "http://127.0.0.1:$MCP_PORT/positions" \
|
|||
|
|
| python3 -c 'import json,sys; print(json.load(sys.stdin)["count"])' 2>/dev/null || echo "?")
|
|||
|
|
if [ "$n" = "0" ]; then
|
|||
|
|
echo "[$STACK_KEY] Keine offenen Positionen – Deploy erlaubt."
|
|||
|
|
return 0
|
|||
|
|
fi
|
|||
|
|
# Stack (noch) nicht gestartet -> nichts, was verloren gehen kann
|
|||
|
|
if [ "$n" = "?" ] && [ -z "$(docker compose ps -q "$TRADER_SVC" 2>/dev/null)" ]; then
|
|||
|
|
echo "[$STACK_KEY] Trader läuft nicht – Deploy erlaubt."
|
|||
|
|
return 0
|
|||
|
|
fi
|
|||
|
|
echo "[$STACK_KEY] ABBRUCH: $n offene Position(en) bzw. MCP nicht erreichbar."
|
|||
|
|
echo " Warten bis flat, oder bewusst: scripts/deploy-local.sh --force"
|
|||
|
|
return 1
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
case "${1:-}" in
|
|||
|
|
--check-flat) check_flat; exit $? ;;
|
|||
|
|
--force) echo "[$STACK_KEY] --force: Sperre übersprungen" ;;
|
|||
|
|
*) check_flat || exit 1 ;;
|
|||
|
|
esac
|
|||
|
|
|
|||
|
|
chmod +x scripts/*.sh 2>/dev/null
|
|||
|
|
echo "[$STACK_KEY] docker compose up -d --build"
|
|||
|
|
docker compose up -d --build || exit 1
|
|||
|
|
|
|||
|
|
echo "[$STACK_KEY] Warte auf gesunden Stack (max. 10 min)..."
|
|||
|
|
for i in $(seq 1 20); do
|
|||
|
|
if scripts/check-stack.sh -q >/dev/null 2>&1; then
|
|||
|
|
scripts/check-stack.sh
|
|||
|
|
exit 0
|
|||
|
|
fi
|
|||
|
|
sleep 30
|
|||
|
|
done
|
|||
|
|
scripts/check-stack.sh -q
|
|||
|
|
exit 1
|