"feat: Implement Docker Compose for backend and frontend servers"
This commit is contained in:
130
backend/start-backend-server.sh
Normal file
130
backend/start-backend-server.sh
Normal file
@@ -0,0 +1,130 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 🏭 MYP Backend - Standalone Server Start
|
||||
# Startet den Backend-Server vollständig unabhängig vom Frontend
|
||||
|
||||
set -e
|
||||
|
||||
echo "🏭 MYP Backend - 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.backend" ]; then
|
||||
log_info "Lade Backend-Umgebungsvariablen..."
|
||||
export $(cat .env.backend | 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"
|
||||
|
||||
# Alte Container stoppen und entfernen
|
||||
log_info "Stoppe eventuell laufende Backend-Container..."
|
||||
docker-compose -f docker-compose.backend.yml down --remove-orphans 2>/dev/null || true
|
||||
|
||||
# Images aufräumen (optional)
|
||||
if [ "$1" = "--clean" ]; then
|
||||
log_info "Räume alte Backend-Images auf..."
|
||||
docker-compose -f docker-compose.backend.yml down --rmi all --volumes 2>/dev/null || true
|
||||
docker system prune -f
|
||||
fi
|
||||
|
||||
# Notwendige Verzeichnisse erstellen
|
||||
log_info "Erstelle notwendige Verzeichnisse..."
|
||||
mkdir -p instance logs migrations/versions config
|
||||
|
||||
# Backend-Container builden und starten
|
||||
log_info "Backend-Container werden gebaut und gestartet..."
|
||||
docker-compose -f docker-compose.backend.yml up --build -d
|
||||
|
||||
# Warten auf Backend-Start
|
||||
log_info "Warte auf Backend-Service..."
|
||||
timeout=120
|
||||
counter=0
|
||||
|
||||
while [ $counter -lt $timeout ]; do
|
||||
if curl -f http://localhost:5000/health >/dev/null 2>&1; then
|
||||
log_success "Backend-Server ist bereit!"
|
||||
break
|
||||
fi
|
||||
|
||||
if [ $((counter % 10)) -eq 0 ]; then
|
||||
log_info "Warte auf Backend-Service... ($counter/$timeout Sekunden)"
|
||||
fi
|
||||
|
||||
sleep 1
|
||||
counter=$((counter + 1))
|
||||
done
|
||||
|
||||
if [ $counter -eq $timeout ]; then
|
||||
log_error "Backend-Service konnte nicht gestartet werden!"
|
||||
log_info "Zeige Backend-Logs:"
|
||||
docker-compose -f docker-compose.backend.yml logs backend
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Migrationen ausführen
|
||||
log_info "Führe Datenbank-Migrationen aus..."
|
||||
docker-compose -f docker-compose.backend.yml exec backend flask db upgrade || log_warning "Migrationen fehlgeschlagen oder nicht erforderlich"
|
||||
|
||||
# Service-Status anzeigen
|
||||
log_info "Backend-Service Status:"
|
||||
docker-compose -f docker-compose.backend.yml ps
|
||||
|
||||
# URLs anzeigen
|
||||
echo ""
|
||||
log_success "🎉 Backend-Server erfolgreich gestartet!"
|
||||
echo ""
|
||||
echo "📡 Backend-API: http://localhost:5000"
|
||||
echo "🔧 Backend-Health: http://localhost:5000/health"
|
||||
echo "📋 Backend-Swagger: http://localhost:5000/swagger"
|
||||
echo "🗄️ PostgreSQL: localhost:5432"
|
||||
echo "⚡ Redis-Cache: localhost:6379"
|
||||
echo ""
|
||||
|
||||
# Logs anzeigen (optional)
|
||||
if [ "$1" = "--logs" ] || [ "$2" = "--logs" ]; then
|
||||
log_info "Zeige Backend-Logs (Strg+C zum Beenden):"
|
||||
docker-compose -f docker-compose.backend.yml logs -f
|
||||
fi
|
||||
|
||||
log_info "Verwende 'docker-compose -f docker-compose.backend.yml logs -f' um Logs zu verfolgen"
|
||||
log_info "Verwende 'docker-compose -f docker-compose.backend.yml down' um den Server zu stoppen"
|
Reference in New Issue
Block a user