4NK_node/fix_dependencies_compose.sh
2025-09-12 16:29:10 +02:00

91 lines
4.4 KiB
Bash
Executable File

#!/bin/bash
set -e
ROOT=$(pwd)
GLOBAL_COMPOSE=$ROOT/docker-compose.yml
# Fonction pour extraire les dépendances d'un service
get_service_dependencies() {
local service_name=$1
docker-compose -f $GLOBAL_COMPOSE config | sed -n "/^ $service_name:/,/^ [a-zA-Z]/p" | grep -A 20 "depends_on:" | grep "^ -" | sed 's/^ - //' | tr '\n' ' '
}
# Fonction pour extraire la définition d'un réseau
get_network_definition() {
local network_name=$1
docker-compose -f $GLOBAL_COMPOSE config | sed -n "/^networks:/,/^[a-zA-Z]/p" | sed -n "/^ $network_name:/,/^ [a-zA-Z]/p" | sed '/^ [a-zA-Z]/d' | sed 's/^ / /'
}
# Mapping des chemins vers les noms de services et leurs réseaux
declare -A SERVICE_MAP=(
["4nk-local/dnsmasq"]="dnsmasq.4nk-local|dnsmasq.4nk-local"
["4nk-local/modules/tor"]="tor.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/bitcoin"]="bitcoin.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/blindbit-oracle"]="blindbit-oracle.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-storage"]="sdk-storage.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-relay/i1"]="i1.sdk-relay.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-relay/i2"]="i2.sdk-relay.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/sdk-relay/i3"]="i3.sdk-relay.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/client/sdk-signer"]="sdk-signer.client.modules.4nk-local|client.modules.4nk-local"
["4nk-local/modules/client/ihm"]="ihm.client.modules.4nk-local|client.modules.4nk-local"
["4nk-local/modules/ia/ollama"]="ollama.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/ia/anythingsqlite"]="anythingsqlite.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/ia/host-api"]="host-api.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/ia/worker"]="worker.ia.modules.4nk-local|ia.modules.4nk-local"
["4nk-local/modules/grafana/loki"]="loki.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/grafana/prometheus"]="prometheus.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/grafana/promtail"]="promtail.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/grafana/grafana"]="grafana.grafana.modules.4nk-local|grafana.modules.4nk-local"
["4nk-local/modules/nginx-proxy"]="nginx-proxy.modules.4nk-local|modules.4nk-local"
["4nk-local/modules/data/postgres"]="postgres.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/redis"]="redis.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/minio"]="minio.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/neo4j"]="neo4j.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/modules/data/opensearch"]="opensearch.data.modules.4nk-local|data.modules.4nk-local"
["4nk-local/projects/lecoffre/front"]="front.lecoffre.projects.4nk-local|lecoffre.projects.4nk-local"
["4nk-local/projects/lecoffre/ia"]="ia.lecoffre.projects.4nk-local|lecoffre.projects.4nk-local"
["4nk-local/projects/lecoffre/back-mini"]="back-mini.lecoffre.projects.4nk-local|lecoffre.projects.4nk-local"
)
# Mettre à jour les docker-compose.yml individuels avec toutes les dépendances
for path in "${!SERVICE_MAP[@]}"; do
IFS='|' read -r service_name network_name <<< "${SERVICE_MAP[$path]}"
compose_file="$ROOT/$path/docker-compose.yml"
echo "Correction des dépendances pour $compose_file ($service_name)"
# Extraire les dépendances
dependencies=$(get_service_dependencies "$service_name")
# Extraire la définition du réseau
network_def=$(get_network_definition "$network_name")
# Créer le fichier avec toutes les dépendances
cat > "$compose_file" << COMPOSE_EOF
services:
$service_name:
extends:
file: $GLOBAL_COMPOSE
service: $service_name
EOF
# Ajouter les dépendances si elles existent
if [ -n "$dependencies" ]; then
echo " depends_on:" >> "$compose_file"
for dep in $dependencies; do
echo " - $dep" >> "$compose_file"
done
fi
# Ajouter les réseaux
cat >> "$compose_file" << COMPOSE_EOF
networks:
$network_name:
$network_def
COMPOSE_EOF
echo "$compose_file mis à jour avec dépendances"
done
echo "Tous les docker-compose.yml individuels ont été mis à jour avec leurs dépendances"