#!/bin/bash # MYP Backend Installations-Skript # Dieses Skript installiert das Backend mit Docker und Host-Netzwerkanbindung set -e # Bei Fehler beenden # Farbcodes für Ausgabe RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[0;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Funktion zur Ausgabe mit Zeitstempel log() { echo -e "${BLUE}[$(date +'%Y-%m-%d %H:%M:%S')]${NC} $1" } # Pfade definieren SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" BACKEND_DIR="$SCRIPT_DIR/backend" # Prüfen ob Docker installiert ist if ! command -v docker &> /dev/null; then log "${RED}Docker ist nicht installiert. Bitte installieren Sie Docker.${NC}" log "Siehe: https://docs.docker.com/get-docker/" exit 1 fi if ! command -v docker compose &> /dev/null; then log "${RED}Docker Compose ist nicht installiert. Bitte installieren Sie Docker Compose.${NC}" log "Siehe: https://docs.docker.com/compose/install/" exit 1 fi # Wechsle ins Backend-Verzeichnis cd "$BACKEND_DIR" log "Arbeite im Verzeichnis: $BACKEND_DIR" # Erstelle .env-Datei log "${YELLOW}Erstelle .env Datei...${NC}" cat > .env << EOL SECRET_KEY=7445630171969DFAC92C53CEC92E67A9CB2E00B3CB2F DATABASE_PATH=instance/myp.db TAPO_USERNAME=till.tomczak@mercedes-benz.com TAPO_PASSWORD=744563017196A PRINTERS={"Printer 1": {"ip": "192.168.0.100"}, "Printer 2": {"ip": "192.168.0.101"}, "Printer 3": {"ip": "192.168.0.102"}, "Printer 4": {"ip": "192.168.0.103"}, "Printer 5": {"ip": "192.168.0.104"}, "Printer 6": {"ip": "192.168.0.106"}} EOL log "${GREEN}.env Datei erfolgreich erstellt${NC}" # Verzeichnisse erstellen log "Erstelle benötigte Verzeichnisse" mkdir -p logs mkdir -p instance # Docker-Image bauen und starten log "${YELLOW}Baue und starte Backend-Container...${NC}" docker compose up -d --build # Prüfe, ob der Container läuft sleep 5 if docker ps | grep -q "myp-backend"; then log "${GREEN}Backend erfolgreich installiert und gestartet unter http://localhost:5000${NC}" else log "${RED}Fehler beim Starten des Backend-Containers. Bitte prüfen Sie die Docker-Logs mit 'docker logs myp-backend'${NC}" exit 1 fi # Initialisierung der Datenbank prüfen log "${YELLOW}Prüfe Datenbank-Initialisierung...${NC}" if [ ! -s "instance/myp.db" ]; then log "${YELLOW}Datenbank scheint leer zu sein. Führe Initialisierungsskript aus...${NC}" docker exec myp-backend python -c "from app import init_db; init_db()" if [ $? -eq 0 ]; then log "${GREEN}Datenbank erfolgreich initialisiert${NC}" else log "${RED}Fehler bei der Datenbank-Initialisierung${NC}" fi else log "${GREEN}Datenbank existiert bereits${NC}" fi log "${GREEN}=== Installation abgeschlossen ===${NC}" log "Das Backend ist unter http://localhost:5000 erreichbar" log "Anzeigen der Logs: docker logs -f myp-backend" log "Backend stoppen: docker compose -f $BACKEND_DIR/docker-compose.yml down"