222 lines
6.8 KiB
Bash
222 lines
6.8 KiB
Bash
|
|
#!/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
|