"Refactor: Rename and restructure guide file for separate backend servers"
This commit is contained in:
parent
31b538185a
commit
03ff4260e2
@ -37,94 +37,159 @@ cd "$SCRIPT_DIR"
|
||||
|
||||
log_info "Arbeitsverzeichnis: $SCRIPT_DIR"
|
||||
|
||||
# Umgebungsmodus bestimmen
|
||||
if [ "$1" = "--production" ] || [ "$FLASK_ENV" = "production" ]; then
|
||||
RUN_MODE="production"
|
||||
log_info "Produktionsmodus aktiviert"
|
||||
elif [ "$1" = "--development" ] || [ "$FLASK_ENV" = "development" ]; then
|
||||
RUN_MODE="development"
|
||||
log_info "Entwicklungsmodus aktiviert"
|
||||
else
|
||||
RUN_MODE="development"
|
||||
log_info "Standard-Entwicklungsmodus aktiviert"
|
||||
fi
|
||||
|
||||
# Umgebungsvariablen laden
|
||||
if [ -f ".env.backend" ]; then
|
||||
if [ -f "env.backend" ]; then
|
||||
log_info "Lade Backend-Umgebungsvariablen..."
|
||||
export $(cat .env.backend | grep -v '^#' | xargs)
|
||||
export $(cat env.backend | grep -v '^#' | grep -v '^$' | xargs)
|
||||
export FLASK_ENV="$RUN_MODE"
|
||||
fi
|
||||
|
||||
# Prüfe Docker-Installation
|
||||
if ! command -v docker &> /dev/null; then
|
||||
log_error "Docker ist nicht installiert!"
|
||||
# Prüfe Python-Installation
|
||||
if ! command -v python3 &> /dev/null; then
|
||||
log_error "Python3 ist nicht installiert!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v docker-compose &> /dev/null; then
|
||||
log_error "Docker Compose ist nicht installiert!"
|
||||
# Prüfe pip-Installation
|
||||
if ! command -v pip3 &> /dev/null; then
|
||||
log_error "pip3 ist nicht installiert!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_success "Docker-Installation verifiziert"
|
||||
log_success "Python-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
|
||||
# Erstelle virtuelle Umgebung falls nicht vorhanden
|
||||
if [ ! -d "venv" ]; then
|
||||
log_info "Erstelle virtuelle Python-Umgebung..."
|
||||
python3 -m venv venv
|
||||
fi
|
||||
|
||||
# Aktiviere virtuelle Umgebung
|
||||
log_info "Aktiviere virtuelle Umgebung..."
|
||||
source venv/bin/activate
|
||||
|
||||
# Installiere Dependencies
|
||||
log_info "Installiere Python-Dependencies..."
|
||||
pip install --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
|
||||
# Notwendige Verzeichnisse erstellen
|
||||
log_info "Erstelle notwendige Verzeichnisse..."
|
||||
mkdir -p instance logs migrations/versions config
|
||||
mkdir -p instance logs migrations/versions
|
||||
|
||||
# Backend-Container builden und starten
|
||||
log_info "Backend-Container werden gebaut und gestartet..."
|
||||
docker-compose -f docker-compose.backend.yml up --build -d
|
||||
# Datenbank initialisieren
|
||||
log_info "Initialisiere Datenbank..."
|
||||
export FLASK_APP=app.py
|
||||
python3 -c "
|
||||
from app import create_app, init_db
|
||||
app = create_app('$RUN_MODE')
|
||||
with app.app_context():
|
||||
init_db()
|
||||
print('Datenbank initialisiert')
|
||||
"
|
||||
|
||||
# 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
|
||||
# Drucker initialisieren
|
||||
if [ ! -z "$PRINTERS" ]; then
|
||||
log_info "Initialisiere Drucker-Konfiguration..."
|
||||
python3 -c "
|
||||
from app import create_app, init_printers
|
||||
app = create_app('$RUN_MODE')
|
||||
with app.app_context():
|
||||
init_printers()
|
||||
print('Drucker initialisiert')
|
||||
"
|
||||
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"
|
||||
# Server starten basierend auf Modus
|
||||
if [ "$RUN_MODE" = "production" ]; then
|
||||
log_info "Starte Backend-Server im Produktionsmodus..."
|
||||
log_info "Verwende Gunicorn für Produktionsbetrieb"
|
||||
|
||||
# Prüfe ob Gunicorn installiert ist
|
||||
if ! command -v gunicorn &> /dev/null; then
|
||||
log_error "Gunicorn ist nicht installiert! Installiere mit: pip install gunicorn"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Starte mit Produktions-Skript
|
||||
exec ./start-production.sh
|
||||
|
||||
else
|
||||
log_info "Starte Backend-Server im Entwicklungsmodus..."
|
||||
|
||||
# Flask-Entwicklungsserver
|
||||
export FLASK_APP=app.py
|
||||
export FLASK_ENV=development
|
||||
export FLASK_DEBUG=1
|
||||
|
||||
# Port prüfen
|
||||
PORT=${PORT:-5000}
|
||||
if netstat -tuln | grep -q ":$PORT "; then
|
||||
log_warning "Port $PORT ist bereits belegt!"
|
||||
log_info "Verwende alternativen Port 5001..."
|
||||
PORT=5001
|
||||
fi
|
||||
|
||||
log_info "Backend-Server startet auf Port $PORT..."
|
||||
|
||||
# Flask-Server starten
|
||||
python3 -m flask run --host=0.0.0.0 --port=$PORT &
|
||||
FLASK_PID=$!
|
||||
|
||||
# Warten auf Server-Start
|
||||
log_info "Warte auf Backend-Service..."
|
||||
timeout=60
|
||||
counter=0
|
||||
|
||||
while [ $counter -lt $timeout ]; do
|
||||
if curl -f http://localhost:$PORT/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!"
|
||||
kill $FLASK_PID 2>/dev/null || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# URLs anzeigen
|
||||
echo ""
|
||||
log_success "🎉 Backend-Server erfolgreich gestartet!"
|
||||
echo ""
|
||||
echo "📡 Backend-API: http://localhost:$PORT"
|
||||
echo "🔧 Backend-Health: http://localhost:$PORT/health"
|
||||
echo "📋 Backend-Test: http://localhost:$PORT/api/test"
|
||||
echo ""
|
||||
|
||||
# Logs anzeigen (optional)
|
||||
if [ "$2" = "--logs" ] || [ "$3" = "--logs" ]; then
|
||||
log_info "Zeige Backend-Logs (Strg+C zum Beenden):"
|
||||
tail -f logs/myp.log 2>/dev/null || log_warning "Keine Log-Datei gefunden"
|
||||
fi
|
||||
|
||||
log_info "Verwende Strg+C um den Server zu stoppen"
|
||||
|
||||
# Warte auf Signal
|
||||
wait $FLASK_PID
|
||||
fi
|
Loading…
x
Reference in New Issue
Block a user