MetaTrader5-Docker-Goldex/scripts/deploy-local.sh
bast 3f649fca21
Some checks failed
MT5 Stack Deploy / deploy (push) Failing after 4s
Deploy per Terraform/SSH
2026-11-07 06:31:49 +01:00

52 lines
1.8 KiB
Bash
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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