- Healthcheck amélioré pour sdk_relay (vérifie l'API de santé) - Variables d'environnement pour le scan (SDK_RELAY_SCAN_TIMEOUT=300, SDK_RELAY_STARTUP_MODE=async) - Dépendances et healthchecks pour tous les services - Script de démarrage optimisé utilisant les healthchecks intégrés - Suppression du blindbit-proxy inutile - Documentation des améliorations
116 lines
3.2 KiB
Bash
Executable File
116 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Script de démarrage amélioré pour lecoffre_node
|
|
# Utilise les healthchecks du docker-compose.yml pour une séquence optimisée
|
|
|
|
set -e
|
|
|
|
echo "🚀 Démarrage de lecoffre_node avec séquence optimisée"
|
|
|
|
# Fonction pour attendre qu'un service soit prêt
|
|
wait_for_service() {
|
|
local service_name=$1
|
|
local health_url=$2
|
|
local timeout=${3:-300}
|
|
|
|
echo "⏳ Attente de $service_name..."
|
|
local start_time=$(date +%s)
|
|
|
|
while [ $(($(date +%s) - start_time)) -lt $timeout ]; do
|
|
if curl -f -s "$health_url" > /dev/null 2>&1; then
|
|
echo "✅ $service_name est prêt"
|
|
return 0
|
|
fi
|
|
sleep 5
|
|
done
|
|
|
|
echo "❌ Timeout: $service_name n'est pas prêt après ${timeout}s"
|
|
return 1
|
|
}
|
|
|
|
# Fonction pour vérifier l'état du scan
|
|
check_scan_status() {
|
|
local sdk_relay_url="http://127.0.0.1:8091"
|
|
|
|
echo "🔍 Vérification de l'état du scan..."
|
|
local response=$(curl -s "$sdk_relay_url" 2>/dev/null || echo "{}")
|
|
local scan_complete=$(echo "$response" | grep -o '"scan_complete":[^,]*' | cut -d: -f2 | tr -d ' "')
|
|
|
|
if [ "$scan_complete" = "true" ]; then
|
|
echo "✅ Scan terminé avec succès"
|
|
return 0
|
|
elif [ "$scan_complete" = "false" ]; then
|
|
echo "⚠️ Scan en cours, mais service disponible"
|
|
return 0
|
|
else
|
|
echo "❓ État du scan inconnu"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Démarrage simplifié utilisant les healthchecks du docker-compose.yml
|
|
echo "📦 Démarrage de tous les services avec healthchecks..."
|
|
docker compose up -d
|
|
|
|
echo "⏳ Attente que tous les services soient prêts (utilise les healthchecks)..."
|
|
echo " - sdk_relay: 60s start_period + healthcheck"
|
|
echo " - ihm_client: 30s start_period + healthcheck"
|
|
echo " - lecoffre-back: 30s start_period + healthcheck"
|
|
echo " - lecoffre-front: 30s start_period + healthcheck"
|
|
|
|
# Attendre que tous les services soient healthy
|
|
echo "🔍 Vérification de l'état des services..."
|
|
sleep 10
|
|
|
|
# Vérifier l'état du scan de sdk_relay
|
|
check_scan_status
|
|
|
|
# Étape 5: Vérification finale
|
|
echo "🔍 Vérification finale de tous les services..."
|
|
|
|
services=(
|
|
"tor:9050"
|
|
"bitcoin:8332"
|
|
"blindbit:8000"
|
|
"sdk_storage:8081"
|
|
"sdk_relay:8091"
|
|
"sdk_signer:8092"
|
|
"ihm_client:3003"
|
|
"lecoffre-back:8080"
|
|
"lecoffre-front:3004"
|
|
)
|
|
|
|
all_ready=true
|
|
for service in "${services[@]}"; do
|
|
name=$(echo $service | cut -d: -f1)
|
|
port=$(echo $service | cut -d: -f2)
|
|
|
|
if curl -f -s "http://127.0.0.1:$port" > /dev/null 2>&1; then
|
|
echo "✅ $name est accessible"
|
|
else
|
|
echo "❌ $name n'est pas accessible"
|
|
all_ready=false
|
|
fi
|
|
done
|
|
|
|
if [ "$all_ready" = true ]; then
|
|
echo "🎉 Tous les services sont prêts !"
|
|
echo "📊 État des services:"
|
|
docker compose ps
|
|
else
|
|
echo "⚠️ Certains services ne sont pas prêts"
|
|
echo "📋 Logs des services problématiques:"
|
|
docker compose logs --tail=20
|
|
exit 1
|
|
fi
|
|
|
|
# Étape 6: Monitoring continu (optionnel)
|
|
if [ "$1" = "--monitor" ]; then
|
|
echo "📊 Démarrage du monitoring continu..."
|
|
while true; do
|
|
sleep 60
|
|
echo "🔄 Vérification périodique..."
|
|
check_scan_status
|
|
done
|
|
fi
|