95 lines
4.4 KiB
Bash
Executable File
95 lines
4.4 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
ROOT=$(pwd)
|
|
GLOBAL_COMPOSE=$ROOT/docker-compose.yml
|
|
|
|
# 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"
|
|
)
|
|
|
|
# Créer les docker-compose.yml individuels simples
|
|
for path in "${!SERVICE_MAP[@]}"; do
|
|
IFS='|' read -r service_name network_name <<< "${SERVICE_MAP[$path]}"
|
|
compose_file="$ROOT/$path/docker-compose.yml"
|
|
|
|
echo "Création de $compose_file pour $service_name"
|
|
|
|
# Créer le fichier simple avec extends
|
|
cat > "$compose_file" << EOF
|
|
services:
|
|
$service_name:
|
|
extends:
|
|
file: $GLOBAL_COMPOSE
|
|
service: $service_name
|
|
|
|
networks:
|
|
$network_name:
|
|
name: 4nk_node_$network_name
|
|
driver: bridge
|
|
ipam:
|
|
config:
|
|
- subnet: $(get_subnet_for_network $network_name)
|
|
gateway: $(get_gateway_for_network $network_name)
|
|
EOF
|
|
|
|
echo "✓ $compose_file créé"
|
|
done
|
|
|
|
# Fonction pour obtenir le subnet selon le réseau
|
|
get_subnet_for_network() {
|
|
case $1 in
|
|
"dnsmasq.4nk-local") echo "172.30.0.0/16" ;;
|
|
"modules.4nk-local") echo "172.31.0.0/16" ;;
|
|
"ia.modules.4nk-local") echo "172.31.2.0/16" ;;
|
|
"grafana.modules.4nk-local") echo "172.31.3.0/16" ;;
|
|
"data.modules.4nk-local") echo "172.31.4.0/16" ;;
|
|
"client.modules.4nk-local") echo "172.31.5.0/16" ;;
|
|
"lecoffre.projects.4nk-local") echo "172.31.6.0/16" ;;
|
|
*) echo "172.31.0.0/16" ;;
|
|
esac
|
|
}
|
|
|
|
# Fonction pour obtenir la gateway selon le réseau
|
|
get_gateway_for_network() {
|
|
case $1 in
|
|
"dnsmasq.4nk-local") echo "172.30.0.1" ;;
|
|
"modules.4nk-local") echo "172.31.0.1" ;;
|
|
"ia.modules.4nk-local") echo "172.31.2.1" ;;
|
|
"grafana.modules.4nk-local") echo "172.31.3.1" ;;
|
|
"data.modules.4nk-local") echo "172.31.4.1" ;;
|
|
"client.modules.4nk-local") echo "172.31.5.1" ;;
|
|
"lecoffre.projects.4nk-local") echo "172.31.6.1" ;;
|
|
*) echo "172.31.0.1" ;;
|
|
esac
|
|
}
|
|
|
|
echo "Tous les docker-compose.yml individuels ont été créés"
|