222 lines
No EOL
6.8 KiB
Bash
222 lines
No EOL
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 |