#!/bin/bash # 🎨 MYP Frontend - Standalone Server Start # Startet den Frontend-Server vollständig unabhängig vom Backend set -e echo "🎨 MYP Frontend - Standalone Server wird gestartet..." # Farben für Terminal-Ausgabe RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Funktionen 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" } # Arbeitsverzeichnis setzen SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" log_info "Arbeitsverzeichnis: $SCRIPT_DIR" # Umgebungsvariablen laden if [ -f ".env.frontend" ]; then log_info "Lade Frontend-Umgebungsvariablen..." export $(cat .env.frontend | grep -v '^#' | xargs) fi # Prüfe Docker-Installation if ! command -v docker &> /dev/null; then log_error "Docker ist nicht installiert!" exit 1 fi if ! command -v docker-compose &> /dev/null; then log_error "Docker Compose ist nicht installiert!" exit 1 fi log_success "Docker-Installation verifiziert" # Backend-Verfügbarkeit prüfen BACKEND_URL=${BACKEND_API_URL:-http://localhost:5000} log_info "Prüfe Backend-Verfügbarkeit: $BACKEND_URL" if ! curl -f "$BACKEND_URL/health" >/dev/null 2>&1; then log_warning "Backend-Server ist nicht verfügbar!" log_warning "Stellen Sie sicher, dass der Backend-Server läuft:" log_warning "cd ../backend && ./start-backend-server.sh" read -p "Möchten Sie trotzdem fortfahren? [y/N]: " -n 1 -r echo if [[ ! $REPLY =~ ^[Yy]$ ]]; then log_info "Abgebrochen." exit 1 fi fi # Alte Container stoppen und entfernen log_info "Stoppe eventuell laufende Frontend-Container..." docker-compose -f docker-compose.frontend.yml down --remove-orphans 2>/dev/null || true # Images aufräumen (optional) if [ "$1" = "--clean" ]; then log_info "Räume alte Frontend-Images auf..." docker-compose -f docker-compose.frontend.yml down --rmi all --volumes 2>/dev/null || true docker system prune -f fi # Notwendige Verzeichnisse erstellen log_info "Erstelle notwendige Verzeichnisse..." mkdir -p .next public/uploads # Node.js Dependencies prüfen if [ ! -d "node_modules" ] || [ ! -f "package-lock.json" ]; then log_info "Installiere Node.js Dependencies..." if command -v pnpm &> /dev/null; then pnpm install elif command -v npm &> /dev/null; then npm install else log_warning "Weder pnpm noch npm gefunden. Dependencies werden im Container installiert." fi fi # Frontend-Container builden und starten log_info "Frontend-Container werden gebaut und gestartet..." docker-compose -f docker-compose.frontend.yml up --build -d # Warten auf Frontend-Start log_info "Warte auf Frontend-Service..." timeout=120 counter=0 while [ $counter -lt $timeout ]; do if curl -f http://localhost:3000/health >/dev/null 2>&1; then log_success "Frontend-Server ist bereit!" break fi # Fallback: Prüfe, ob der Container läuft if [ $counter -gt 30 ] && curl -f http://localhost:3000 >/dev/null 2>&1; then log_success "Frontend-Server ist bereit!" break fi if [ $((counter % 10)) -eq 0 ]; then log_info "Warte auf Frontend-Service... ($counter/$timeout Sekunden)" fi sleep 1 counter=$((counter + 1)) done if [ $counter -eq $timeout ]; then log_error "Frontend-Service konnte nicht gestartet werden!" log_info "Zeige Frontend-Logs:" docker-compose -f docker-compose.frontend.yml logs frontend exit 1 fi # Service-Status anzeigen log_info "Frontend-Service Status:" docker-compose -f docker-compose.frontend.yml ps # URLs anzeigen echo "" log_success "🎉 Frontend-Server erfolgreich gestartet!" echo "" echo "🌐 Frontend-App: http://localhost:3000" echo "🔧 Frontend-Health: http://localhost:3000/health" echo "📦 CDN-Assets: http://localhost:8080" echo "⚡ Frontend-Cache: localhost:6380" echo "" echo "🔗 Verbindet sich mit Backend: ${BACKEND_API_URL:-http://localhost:5000}" echo "" # Logs anzeigen (optional) if [ "$1" = "--logs" ] || [ "$2" = "--logs" ]; then log_info "Zeige Frontend-Logs (Strg+C zum Beenden):" docker-compose -f docker-compose.frontend.yml logs -f fi log_info "Verwende 'docker-compose -f docker-compose.frontend.yml logs -f' um Logs zu verfolgen" log_info "Verwende 'docker-compose -f docker-compose.frontend.yml down' um den Server zu stoppen"