162 lines
4.5 KiB
Bash
162 lines
4.5 KiB
Bash
#!/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" |