import subprocess import os import sys COMPOSE_DIR = "backend" NETWORK_NAME = "arc-network" PROJECTS = { "infra": "arc-infra", "ai": "arc-ai", "app": "arc-app", "sandbox": "arc-sandbox" } def run_command(command): """Exécute une commande système.""" print(f"🚀 Exécution : {' '.join(command) if isinstance(command, list) else command}") is_windows = os.name == 'nt' try: subprocess.run(command, shell=is_windows, check=True) return True except subprocess.CalledProcessError: return False def main(): print("🛑 Démarrage de l'arrêt complet du projet...") # 1. Arrêter l'Application print(f"\n--- ARRÊT DE L'APPLICATION ({PROJECTS['app']}) ---") run_command(["docker", "compose", "-p", PROJECTS["app"], "-f", f"{COMPOSE_DIR}/docker-compose.yml", "down"]) # 2. Arrêter l'IA print(f"\n--- ARRÊT DE L'IA ({PROJECTS['ai']}) ---") run_command(["docker", "compose", "-p", PROJECTS["ai"], "-f", f"{COMPOSE_DIR}/docker-compose-ai.yml", "down"]) # 3. Arrêter l'Infrastructure print(f"\n--- ARRÊT DE L'INFRASTRUCTURE ({PROJECTS['infra']}) ---") run_command(["docker", "compose", "-p", PROJECTS["infra"], "-f", f"{COMPOSE_DIR}/docker-compose-infra.yml", "down"]) # 4. Arrêter la Sandbox print(f"\n--- ARRÊT DE LA SANDBOX ({PROJECTS['sandbox']}) ---") run_command(["docker", "compose", "-p", PROJECTS["sandbox"], "-f", f"{COMPOSE_DIR}/docker-compose-sandbox.yml", "down"]) # 5. Supprimer le réseau print(f"\n--- NETTOYAGE DU RÉSEAU ---") run_command(["docker", "network", "rm", NETWORK_NAME]) print("\n✅ Tout est arrêté proprement.") if __name__ == "__main__": try: main() except KeyboardInterrupt: print("\n🛑 Arrêt forcé par l'utilisateur.")