veza/scripts/archive/start-veza-docker-detailed.sh

222 lines
6.8 KiB
Bash
Raw Normal View History

#!/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