52 lines
1.8 KiB
Bash
Executable file
52 lines
1.8 KiB
Bash
Executable file
#!/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
|