- Ajout de l'intégration Celery pour les tâches asynchrones - Création des tâches spécialisées (OCR, classification, extraction, indexation, vérification) - Configuration des queues Celery avec Redis - Création du fichier d'environnement complet (.env.example et .env) - Script bootstrap automatisé pour l'initialisation - Amélioration du worker avec orchestration des pipelines - Ajout des dépendances Celery et Kombu Fonctionnalités ajoutées: - Pipeline de traitement asynchrone avec Celery - Tâches de traitement en lot - Monitoring et health checks - Configuration d'environnement centralisée - Script d'initialisation automatisé
242 lines
7.6 KiB
Bash
Executable File
242 lines
7.6 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
# Script de bootstrap pour l'infrastructure Notariat Pipeline
|
|
# Ce script initialise tous les services nécessaires
|
|
|
|
echo "🚀 Démarrage du bootstrap Notariat Pipeline..."
|
|
|
|
# Vérification des prérequis
|
|
check_prerequisites() {
|
|
echo "📋 Vérification des prérequis..."
|
|
|
|
if ! command -v docker &> /dev/null; then
|
|
echo "❌ Docker n'est pas installé. Veuillez installer Docker d'abord."
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then
|
|
echo "❌ Docker Compose n'est pas installé. Veuillez installer Docker Compose d'abord."
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ Prérequis vérifiés"
|
|
}
|
|
|
|
# Configuration de l'environnement
|
|
setup_environment() {
|
|
echo "⚙️ Configuration de l'environnement..."
|
|
|
|
cd "$(dirname "$0")/../infra"
|
|
|
|
# Copie du fichier d'environnement s'il n'existe pas
|
|
if [ ! -f .env ]; then
|
|
if [ -f .env.example ]; then
|
|
cp .env.example .env
|
|
echo "📝 Fichier .env créé à partir de .env.example"
|
|
echo "⚠️ Veuillez modifier le fichier .env avec vos valeurs de production"
|
|
else
|
|
echo "❌ Fichier .env.example non trouvé"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "✅ Fichier .env existe déjà"
|
|
fi
|
|
}
|
|
|
|
# Téléchargement des images Docker
|
|
pull_images() {
|
|
echo "📥 Téléchargement des images Docker..."
|
|
|
|
# Téléchargement des images principales
|
|
docker compose pull postgres redis minio neo4j opensearch ollama prometheus grafana
|
|
|
|
# Téléchargement de l'image AnythingLLM
|
|
docker pull mintplexlabs/anythingllm:latest
|
|
|
|
echo "✅ Images téléchargées"
|
|
}
|
|
|
|
# Démarrage des services de base
|
|
start_base_services() {
|
|
echo "🏗️ Démarrage des services de base..."
|
|
|
|
# Démarrage des services essentiels
|
|
docker compose up -d postgres redis minio opensearch neo4j ollama
|
|
|
|
echo "⏳ Attente du démarrage des services (30 secondes)..."
|
|
sleep 30
|
|
|
|
echo "✅ Services de base démarrés"
|
|
}
|
|
|
|
# Configuration de MinIO
|
|
setup_minio() {
|
|
echo "🗄️ Configuration de MinIO..."
|
|
|
|
# Attendre que MinIO soit prêt
|
|
echo "⏳ Attente de MinIO..."
|
|
sleep 10
|
|
|
|
# Installation de mc (MinIO Client) si nécessaire
|
|
if ! command -v mc &> /dev/null; then
|
|
echo "📦 Installation de MinIO Client..."
|
|
if command -v apt-get &> /dev/null; then
|
|
# Debian/Ubuntu
|
|
wget -O /tmp/mc https://dl.min.io/client/mc/release/linux-amd64/mc
|
|
chmod +x /tmp/mc
|
|
sudo mv /tmp/mc /usr/local/bin/
|
|
elif command -v yum &> /dev/null; then
|
|
# CentOS/RHEL
|
|
wget -O /tmp/mc https://dl.min.io/client/mc/release/linux-amd64/mc
|
|
chmod +x /tmp/mc
|
|
sudo mv /tmp/mc /usr/local/bin/
|
|
else
|
|
echo "⚠️ Impossible d'installer mc automatiquement. Veuillez l'installer manuellement."
|
|
fi
|
|
fi
|
|
|
|
# Configuration de l'alias MinIO
|
|
if command -v mc &> /dev/null; then
|
|
mc alias set local http://127.0.0.1:9000 minio minio_pwd || true
|
|
mc mb -p local/ingest || true
|
|
echo "✅ Bucket MinIO 'ingest' créé"
|
|
else
|
|
echo "⚠️ mc non disponible, création manuelle du bucket nécessaire"
|
|
fi
|
|
}
|
|
|
|
# Configuration d'Ollama
|
|
setup_ollama() {
|
|
echo "🤖 Configuration d'Ollama..."
|
|
|
|
# Attendre qu'Ollama soit prêt
|
|
echo "⏳ Attente d'Ollama..."
|
|
sleep 15
|
|
|
|
# Téléchargement des modèles
|
|
echo "📥 Téléchargement du modèle llama3:8b..."
|
|
curl -s http://127.0.0.1:11434/api/pull -d '{"name":"llama3:8b"}' || echo "⚠️ Erreur lors du téléchargement de llama3:8b"
|
|
|
|
echo "📥 Téléchargement du modèle mistral:7b..."
|
|
curl -s http://127.0.0.1:11434/api/pull -d '{"name":"mistral:7b"}' || echo "⚠️ Erreur lors du téléchargement de mistral:7b"
|
|
|
|
echo "✅ Modèles Ollama configurés"
|
|
}
|
|
|
|
# Démarrage des services applicatifs
|
|
start_application_services() {
|
|
echo "🚀 Démarrage des services applicatifs..."
|
|
|
|
# Démarrage d'AnythingLLM
|
|
docker compose up -d anythingsqlite
|
|
|
|
# Attendre qu'AnythingLLM soit prêt
|
|
echo "⏳ Attente d'AnythingLLM..."
|
|
sleep 20
|
|
|
|
# Démarrage de l'API et des workers
|
|
docker compose up -d host-api worker
|
|
|
|
# Démarrage des services de monitoring
|
|
docker compose up -d prometheus grafana
|
|
|
|
echo "✅ Services applicatifs démarrés"
|
|
}
|
|
|
|
# Configuration des workspaces AnythingLLM
|
|
setup_anythingllm_workspaces() {
|
|
echo "🏢 Configuration des workspaces AnythingLLM..."
|
|
|
|
# Attendre qu'AnythingLLM soit complètement prêt
|
|
sleep 30
|
|
|
|
# Création des workspaces
|
|
echo "📁 Création du workspace 'workspace_normes'..."
|
|
curl -s -X POST "http://127.0.0.1:3001/api/workspaces" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"name":"workspace_normes"}' || echo "⚠️ Erreur lors de la création du workspace normes"
|
|
|
|
echo "📁 Création du workspace 'workspace_trames'..."
|
|
curl -s -X POST "http://127.0.0.1:3001/api/workspaces" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"name":"workspace_trames"}' || echo "⚠️ Erreur lors de la création du workspace trames"
|
|
|
|
echo "📁 Création du workspace 'workspace_actes'..."
|
|
curl -s -X POST "http://127.0.0.1:3001/api/workspaces" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"name":"workspace_actes"}' || echo "⚠️ Erreur lors de la création du workspace actes"
|
|
|
|
echo "✅ Workspaces AnythingLLM configurés"
|
|
}
|
|
|
|
# Vérification finale
|
|
final_check() {
|
|
echo "🔍 Vérification finale des services..."
|
|
|
|
# Vérification de l'API
|
|
if curl -s http://127.0.0.1:8000/api/health > /dev/null; then
|
|
echo "✅ API accessible sur http://127.0.0.1:8000"
|
|
else
|
|
echo "⚠️ API non accessible"
|
|
fi
|
|
|
|
# Vérification d'AnythingLLM
|
|
if curl -s http://127.0.0.1:3001 > /dev/null; then
|
|
echo "✅ AnythingLLM accessible sur http://127.0.0.1:3001"
|
|
else
|
|
echo "⚠️ AnythingLLM non accessible"
|
|
fi
|
|
|
|
# Vérification de Grafana
|
|
if curl -s http://127.0.0.1:3000 > /dev/null; then
|
|
echo "✅ Grafana accessible sur http://127.0.0.1:3000"
|
|
else
|
|
echo "⚠️ Grafana non accessible"
|
|
fi
|
|
|
|
# Affichage du statut des conteneurs
|
|
echo "📊 Statut des conteneurs:"
|
|
docker compose ps
|
|
}
|
|
|
|
# Fonction principale
|
|
main() {
|
|
echo "🎯 Bootstrap Notariat Pipeline v1.1.0"
|
|
echo "======================================"
|
|
|
|
check_prerequisites
|
|
setup_environment
|
|
pull_images
|
|
start_base_services
|
|
setup_minio
|
|
setup_ollama
|
|
start_application_services
|
|
setup_anythingllm_workspaces
|
|
final_check
|
|
|
|
echo ""
|
|
echo "🎉 Bootstrap terminé avec succès!"
|
|
echo ""
|
|
echo "📋 Services disponibles:"
|
|
echo " • API Notariale: http://localhost:8000"
|
|
echo " • Documentation API: http://localhost:8000/docs"
|
|
echo " • AnythingLLM: http://localhost:3001"
|
|
echo " • Grafana: http://localhost:3000"
|
|
echo " • MinIO Console: http://localhost:9001"
|
|
echo " • Ollama: http://localhost:11434"
|
|
echo ""
|
|
echo "🔧 Commandes utiles:"
|
|
echo " • Voir les logs: docker compose logs -f"
|
|
echo " • Arrêter: docker compose down"
|
|
echo " • Redémarrer: docker compose restart"
|
|
echo ""
|
|
echo "⚠️ N'oubliez pas de:"
|
|
echo " • Modifier les mots de passe dans infra/.env"
|
|
echo " • Configurer les certificats TLS pour la production"
|
|
echo " • Importer les données initiales (trames, normes)"
|
|
}
|
|
|
|
# Exécution du script
|
|
main "$@"
|