MetaTrader5-Docker-Goldex/scripts/deploy-local.sh

53 lines
1.8 KiB
Bash
Raw Permalink Normal View History

2026-11-07 05:31:49 +00:00
#!/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