#!/bin/bash echo "🐳 DÉMARRAGE DÉTAILLÉ DE L'APPLICATION VEZA AVEC DOCKER" echo "==========================================================" echo "" # Couleurs pour les messages RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Fonction pour afficher les messages log_info() { echo -e "${BLUE}[INFO]${NC} $1" } log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1" } log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } # VĂ©rifier que Docker est installĂ© if ! command -v docker &> /dev/null; then log_error "Docker n'est pas installĂ©" exit 1 fi if ! command -v docker-compose &> /dev/null; then log_error "Docker Compose n'est pas installĂ©" exit 1 fi # ArrĂȘter les conteneurs existants log_info "ArrĂȘt des conteneurs existants..." docker-compose -f docker-compose.production.yml down 2>/dev/null sleep 2 # Construire les images log_info "Construction des images Docker..." docker-compose -f docker-compose.production.yml build --no-cache if [ $? -ne 0 ]; then log_error "Erreur lors de la construction des images" exit 1 fi log_success "Images construites avec succĂšs" # DĂ©marrer les services de base log_info "DĂ©marrage des services de base (PostgreSQL, Redis)..." docker-compose -f docker-compose.production.yml up -d postgres redis # Attendre que les services de base soient prĂȘts log_info "Attente que PostgreSQL soit prĂȘt..." timeout 60 bash -c 'until docker exec veza-postgres-prod pg_isready -U veza_user; do sleep 2; done' if [ $? -eq 124 ]; then log_error "Timeout: PostgreSQL n'a pas dĂ©marrĂ© dans les 60 secondes" docker-compose -f docker-compose.production.yml logs postgres exit 1 fi log_success "PostgreSQL prĂȘt" log_info "Attente que Redis soit prĂȘt..." timeout 30 bash -c 'until docker exec veza-redis-prod redis-cli ping; do sleep 2; done' if [ $? -eq 124 ]; then log_error "Timeout: Redis n'a pas dĂ©marrĂ© dans les 30 secondes" docker-compose -f docker-compose.production.yml logs redis exit 1 fi log_success "Redis prĂȘt" # DĂ©marrer le backend API log_info "DĂ©marrage du backend API..." docker-compose -f docker-compose.production.yml up -d backend-api # Attendre que le backend soit prĂȘt log_info "Attente que le backend API soit prĂȘt..." timeout 60 bash -c 'until curl -s http://localhost:8080/api/health > /dev/null; do sleep 3; done' if [ $? -eq 124 ]; then log_error "Timeout: Backend API n'a pas dĂ©marrĂ© dans les 60 secondes" docker-compose -f docker-compose.production.yml logs backend-api exit 1 fi log_success "Backend API prĂȘt" # DĂ©marrer le frontend log_info "DĂ©marrage du frontend..." docker-compose -f docker-compose.production.yml up -d frontend # Attendre que le frontend soit prĂȘt log_info "Attente que le frontend soit prĂȘt..." timeout 60 bash -c 'until curl -s http://localhost:5174 > /dev/null; do sleep 3; done' if [ $? -eq 124 ]; then log_warning "Timeout: Frontend n'a pas dĂ©marrĂ© dans les 60 secondes" docker-compose -f docker-compose.production.yml logs frontend else log_success "Frontend prĂȘt" fi # DĂ©marrer le stream server log_info "DĂ©marrage du stream server..." docker-compose -f docker-compose.production.yml up -d stream-server # Attendre que le stream server soit prĂȘt log_info "Attente que le stream server soit prĂȘt..." timeout 60 bash -c 'until curl -s http://localhost:8082 > /dev/null; do sleep 3; done' if [ $? -eq 124 ]; then log_warning "Timeout: Stream server n'a pas dĂ©marrĂ© dans les 60 secondes" docker-compose -f docker-compose.production.yml logs stream-server else log_success "Stream server prĂȘt" fi # DĂ©marrer le chat server (optionnel) log_info "DĂ©marrage du chat server..." docker-compose -f docker-compose.production.yml up -d chat-server # Attendre que le chat server soit prĂȘt log_info "Attente que le chat server soit prĂȘt..." timeout 60 bash -c 'until curl -s http://localhost:8081 > /dev/null; do sleep 3; done' if [ $? -eq 124 ]; then log_warning "Timeout: Chat server n'a pas dĂ©marrĂ© dans les 60 secondes" docker-compose -f docker-compose.production.yml logs chat-server else log_success "Chat server prĂȘt" fi # DĂ©marrer les services de monitoring log_info "DĂ©marrage des services de monitoring..." docker-compose -f docker-compose.production.yml up -d prometheus grafana # Attendre que Grafana soit prĂȘt log_info "Attente que Grafana soit prĂȘt..." timeout 60 bash -c 'until curl -s http://localhost:3000 > /dev/null; do sleep 3; done' if [ $? -eq 124 ]; then log_warning "Timeout: Grafana n'a pas dĂ©marrĂ© dans les 60 secondes" docker-compose -f docker-compose.production.yml logs grafana else log_success "Grafana prĂȘt" fi # Test final de tous les services echo "" log_info "Test final de tous les services..." # Backend API if curl -s http://localhost:8080/api/health > /dev/null; then log_success "✅ Backend API: http://localhost:8080" else log_error "❌ Backend API: Non accessible" fi # Frontend if curl -s http://localhost:5174 > /dev/null; then log_success "✅ Frontend: http://localhost:5174" else log_error "❌ Frontend: Non accessible" fi # Stream Server if curl -s http://localhost:8082 > /dev/null; then log_success "✅ Stream Server: http://localhost:8082" else log_error "❌ Stream Server: Non accessible" fi # Chat Server if curl -s http://localhost:8081 > /dev/null; then log_success "✅ Chat Server: http://localhost:8081" else log_error "❌ Chat Server: Non accessible" fi # Grafana if curl -s http://localhost:3000 > /dev/null; then log_success "✅ Grafana: http://localhost:3000" else log_error "❌ Grafana: Non accessible" fi # PostgreSQL if docker exec veza-postgres-prod pg_isready -U veza_user > /dev/null 2>&1; then log_success "✅ PostgreSQL: localhost:5432" else log_error "❌ PostgreSQL: Non accessible" fi # Redis if docker exec veza-redis-prod redis-cli ping > /dev/null 2>&1; then log_success "✅ Redis: localhost:6379" else log_error "❌ Redis: Non accessible" fi echo "" log_success "🎉 Application Veza dĂ©marrĂ©e avec Docker !" echo "" echo "đŸ“± Services accessibles :" echo " ‱ Frontend Web: http://localhost:5174" echo " ‱ Backend API: http://localhost:8080" echo " ‱ Stream Server: http://localhost:8082" echo " ‱ Chat Server: http://localhost:8081" echo " ‱ Grafana (Monitoring): http://localhost:3000" echo " ‱ PostgreSQL: localhost:5432" echo " ‱ Redis: localhost:6379" echo "" echo "💡 Commandes utiles :" echo " ‱ Voir les logs: docker-compose -f docker-compose.production.yml logs -f" echo " ‱ ArrĂȘter: docker-compose -f docker-compose.production.yml down" echo " ‱ RedĂ©marrer: docker-compose -f docker-compose.production.yml restart" echo "" echo "🔍 Logs en temps rĂ©el :" docker-compose -f docker-compose.production.yml logs -f --tail=50