#!/usr/bin/env bash set -euo pipefail BASE_DIR="/home/debian/code/4NK_dev/4NK_node" cd "$BASE_DIR" || exit 1 echo "== Début de l’orchestration de démarrage des modules ==" SERVICES=( tor bitcoin blindbit sdk_storage sdk_relay1 sdk_relay2 sdk_relay3 ihm_client sdk_signer coffre_back_mini coffre_front ) wait_for_service() { local svc="$1"; local timeout=${2:-120}; local waited=0 while :; do if docker compose ps "$svc" 2>/dev/null | grep -q "Up"; then return 0 fi if [ "$waited" -ge "$timeout" ]; then echo "[WARN] Service '$svc' n'est pas en état 'Up' après ${timeout}s" >&2 return 1 fi waited=$((waited+2)) sleep 2 done } for svc in "${SERVICES[@]}"; do # Determine corresponding image to verify availability case "$svc" in tor) img="4nk-node-tor:docker-support-v2" ;; bitcoin) img="4nk-node-bitcoin:docker-support-v2" ;; blindbit) img="4nk-node-blindbit:docker-support-v2" ;; sdk_storage) img="4nk-node-sdk_storage:docker-support-v2" ;; sdk_relay1) img="4nk-node-sdk_relay1:docker-support-v2" ;; sdk_relay2) img="4nk-node-sdk_relay2:docker-support-v2" ;; sdk_relay3) img="4nk-node-sdk_relay3:docker-support-v2" ;; ihm_client) img="4nk-node-ihm_client:docker-support-v2" ;; sdk_signer) img="4nk-node-sdk_signer:docker-support-v2" ;; coffre_back_mini) img="4nk-node-lecoffre-back-mini:latest" ;; coffre_front) img="lecoffre-front:latest" ;; miniback) img="4nk-node-miniback:latest" ;; *) img="" ;; esac if [[ -n "$img" ]]; then if ! docker image inspect "$img" >/dev/null 2>&1; then echo "[WARN] Image '$img' for service '$svc' not found; skipping." >&2 continue fi fi echo "Starting service: $svc" docker compose up -d "$svc" wait_for_service "$svc" 180 || echo "Continuing malgré l'état potentiellement non Up pour $svc" echo "Service $svc démarré (ou état final vérifié)." done echo "== Ordre d’orchestration terminé =="