diff --git a/INSTALL.md b/INSTALL.md index c2ed1e2..99c08ab 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -4,9 +4,20 @@ Dieses Dokument beschreibt die Installation des MYP-Systems, bestehend aus einem ## Systemanforderungen -- Docker und Docker Compose -- Zwei Raspberry Pi (oder andere Linux-basierte Computer) -- Netzwerkverbindung zwischen den Geräten +- **Frontend**: + - Raspberry Pi 3B+ oder neuer (empfohlen: Pi 4 mit mindestens 2GB RAM) + - Raspbian/Raspberry Pi OS (64-bit empfohlen) + - Docker und Docker Compose (werden automatisch installiert) + - Internet-Zugang für die Installation + - Zwei Netzwerk-Schnittstellen: + - Eine mit Internet-Zugang + - Eine für die Verbindung zum Backend-Netzwerk + +- **Backend**: + - Raspberry Pi 3B+ oder neuer (empfohlen: Pi 4 mit mindestens 2GB RAM) + - Raspbian/Raspberry Pi OS (64-bit empfohlen) + - Docker und Docker Compose (werden automatisch installiert) + - Verbindung zum Druckernetzwerk ## 1. Installation des Backends @@ -22,10 +33,18 @@ ssh pi@raspberry-backend # In das Projektverzeichnis wechseln cd /home/pi/myp -# Installations-Skript ausführen +# Installations-Skript ausführbar machen und ausführen +chmod +x install-backend.sh ./install-backend.sh ``` +Das Skript erledigt folgende Aufgaben: +- Installation von Docker und Docker Compose (falls nicht vorhanden) +- Erstellung der nötigen Verzeichnisse und Dateien +- Erstellung und Start des Docker-Containers +- Initialisierung der Datenbank +- Überprüfung, ob der Service korrekt läuft + Nach erfolgreicher Installation ist das Backend unter `http://raspberry-backend:5000` erreichbar. ## 2. Installation des Frontends @@ -42,10 +61,17 @@ ssh pi@raspberry-frontend # In das Projektverzeichnis wechseln cd /home/pi/myp -# Installations-Skript ausführen +# Installations-Skript ausführbar machen und ausführen +chmod +x install-frontend.sh ./install-frontend.sh ``` +Das Skript erledigt folgende Aufgaben: +- Installation von Docker und Docker Compose (falls nicht vorhanden) +- Erstellung der benötigten Verzeichnisse und Dateien +- Erstellung und Start des Docker-Containers +- Überprüfung, ob der Service korrekt läuft + Nach erfolgreicher Installation ist das Frontend unter `http://raspberry-frontend:3000` erreichbar. ## 3. Konfiguration der Verbindung zwischen Frontend und Backend @@ -71,8 +97,8 @@ NEXT_PUBLIC_API_URL=http://raspberry-backend:5000 ```bash cd /home/pi/myp/packages/reservation-platform -docker compose down -docker compose up -d +docker-compose down +docker-compose up -d ``` ## 4. Wartung und Fehlerbehebung @@ -94,13 +120,13 @@ docker logs -f myp-frontend **Backend:** ```bash cd /pfad/zum/backend -docker compose restart +docker-compose restart ``` **Frontend:** ```bash cd /pfad/zum/frontend -docker compose restart +docker-compose restart ``` ### Datenbank-Reset @@ -110,11 +136,65 @@ Sollte die Datenbank zurückgesetzt werden müssen: ```bash # Auf dem Backend-Raspberry Pi cd /home/pi/myp/backend -docker compose down +docker-compose down rm -f instance/myp.db -docker compose up -d +docker-compose up -d ``` +### Docker Compose YAML-Fehler + +Wenn Sie einen YAML-Fehler in der Docker Compose-Datei erhalten: + +``` +yaml: line 12: did not find expected key +``` + +Überprüfen Sie folgende Punkte: +1. Die Docker Compose-Version könnte veraltet sein. Die Installationsskripte installieren automatisch die richtige Version. +2. Es könnte ein Syntaxfehler in der YAML-Datei vorliegen. Prüfen Sie insbesondere komplexe Werte wie JSON-Strings. + +Fehlerbehebung: +```bash +# Auf dem betroffenen Server +cd /home/pi/myp +# Für das Backend +nano backend/docker-compose.yml +# Für das Frontend +nano packages/reservation-platform/docker-compose.yml +``` + +### Docker-Daemon läuft nicht + +Wenn Sie die Fehlermeldung erhalten, dass der Docker-Daemon nicht läuft: + +``` +Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? +``` + +Starten Sie den Docker-Daemon: +```bash +sudo systemctl start docker +# oder +sudo service docker start +``` + +### Container startet nicht + +Wenn der Container nicht startet, prüfen Sie die Logs: + +```bash +docker logs myp-backend +# oder +docker logs myp-frontend +``` + +### Frontend kann nicht auf Backend zugreifen + +1. Stellen Sie sicher, dass beide Server im selben Netzwerk sind +2. Überprüfen Sie die Firewall-Einstellungen +3. Stellen Sie sicher, dass der Backend-Service auf Port 5000 läuft +4. Stellen Sie sicher, dass die richtige Backend-URL in der .env-Datei des Frontends eingestellt ist + ## 5. Automatischer Start beim Systemstart Die Docker-Container sind so konfiguriert, dass sie automatisch beim Neustart der Geräte starten (`restart: unless-stopped`). @@ -123,10 +203,10 @@ Sollte dies nicht funktionieren, kann der Start in die `/etc/rc.local` eingetrag ```bash # Auf dem Backend-Raspberry Pi -echo "cd /home/pi/myp/backend && docker compose up -d" >> /etc/rc.local +echo "cd /home/pi/myp/backend && docker-compose up -d" >> /etc/rc.local # Auf dem Frontend-Raspberry Pi -echo "cd /home/pi/myp/packages/reservation-platform && docker compose up -d" >> /etc/rc.local +echo "cd /home/pi/myp/packages/reservation-platform && docker-compose up -d" >> /etc/rc.local ``` ## 6. Technische Details @@ -134,4 +214,29 @@ echo "cd /home/pi/myp/packages/reservation-platform && docker compose up -d" >> - Das Backend ist eine Flask-Anwendung, die mit den Smart Plugs kommuniziert - Das Frontend ist eine Next.js-Anwendung - Beide Komponenten laufen in Docker-Containern mit Host-Netzwerkanbindung -- Die Datenbanken werden in Docker-Volumes persistiert \ No newline at end of file +- Die Datenbanken werden in Docker-Volumes persistiert + +## 7. Raspberry Pi-spezifische Anmerkungen + +Wenn Sie Probleme mit der Docker-Installation auf dem Raspberry Pi haben, können Sie folgende Schritte manuell ausführen: + +```bash +# Docker für Raspberry Pi installieren +curl -fsSL https://get.docker.com -o get-docker.sh +sudo sh get-docker.sh +sudo usermod -aG docker $USER + +# Docker Compose für die richtige Architektur installieren +# Für 32-bit (armhf): +sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-armv7" -o /usr/local/bin/docker-compose + +# Für 64-bit (arm64): +sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-aarch64" -o /usr/local/bin/docker-compose + +sudo chmod +x /usr/local/bin/docker-compose +``` + +## 8. Unterstützung + +Bei Fragen oder Problemen wenden Sie sich an: +- Till Tomczak (Projektentwickler) \ No newline at end of file diff --git a/backend/.env b/backend/.env index e294c9a..bd24388 100644 --- a/backend/.env +++ b/backend/.env @@ -2,4 +2,4 @@ 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"}} +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"}} diff --git a/backend/docker-compose.yml b/backend/docker-compose.yml index c23a893..45fbcea 100755 --- a/backend/docker-compose.yml +++ b/backend/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3' +version: '2' services: backend: @@ -10,7 +10,7 @@ services: - DATABASE_PATH=${DATABASE_PATH:-instance/myp.db} - TAPO_USERNAME=${TAPO_USERNAME:-till.tomczak@mercedes-benz.com} - TAPO_PASSWORD=${TAPO_PASSWORD:-744563017196A} - - PRINTERS=${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"}}} + - PRINTERS='${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"}}}' - FLASK_APP=app.py - PYTHONUNBUFFERED=1 volumes: diff --git a/install-backend.sh b/install-backend.sh index 29197b3..062befa 100755 --- a/install-backend.sh +++ b/install-backend.sh @@ -29,17 +29,168 @@ if [ ! -d "$BACKEND_DIR" ]; then exit 1 fi +# Funktion zur Installation von Docker und Docker Compose für Raspberry Pi +install_docker() { + log "${YELLOW}Docker ist nicht installiert. Installation wird gestartet...${NC}" + + # Erkenne Raspberry Pi + if [ -f /proc/device-tree/model ] && grep -q "Raspberry Pi" /proc/device-tree/model; then + log "${GREEN}Raspberry Pi erkannt. Installiere Docker für ARM-Architektur...${NC}" + IS_RASPBERRY_PI=true + else + IS_RASPBERRY_PI=false + fi + + # Aktualisiere Paketindex + if ! sudo apt-get update; then + error_log "Konnte Paketindex nicht aktualisieren. Bitte manuell installieren." + exit 1 + fi + + # Installiere erforderliche Pakete + if ! sudo apt-get install -y apt-transport-https ca-certificates curl gnupg software-properties-common; then + error_log "Konnte erforderliche Pakete nicht installieren. Bitte manuell installieren." + exit 1 + fi + + # Raspberry Pi-spezifische Installation + if [ "$IS_RASPBERRY_PI" = true ]; then + # Setze Systemarchitektur für Raspberry Pi (armhf oder arm64) + ARCH=$(dpkg --print-architecture) + log "Erkannte Systemarchitektur: ${ARCH}" + + # Installiere Docker mit convenience script (für Raspberry Pi empfohlen) + log "${YELLOW}Installiere Docker mit dem convenience script...${NC}" + curl -fsSL https://get.docker.com -o get-docker.sh + sudo sh get-docker.sh + + if [ $? -ne 0 ]; then + error_log "Docker-Installation fehlgeschlagen. Bitte manuell installieren." + exit 1 + fi + else + # Standard-Installation für andere Systeme + # Füge Docker's offiziellen GPG-Schlüssel hinzu + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - + + # Füge Docker-Repository hinzu + if ! sudo add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"; then + error_log "Konnte Docker-Repository nicht hinzufügen. Prüfen Sie, ob Ihr System unterstützt wird." + exit 1 + fi + + # Aktualisiere Paketindex erneut + sudo apt-get update + + # Installiere Docker + if ! sudo apt-get install -y docker-ce docker-ce-cli containerd.io; then + error_log "Konnte Docker nicht installieren. Bitte manuell installieren." + exit 1 + fi + fi + + # Füge aktuellen Benutzer zur Docker-Gruppe hinzu + sudo usermod -aG docker "$USER" + + log "${GREEN}Docker wurde installiert.${NC}" + log "${YELLOW}WICHTIG: Möglicherweise müssen Sie sich neu anmelden, damit die Gruppenänderung wirksam wird.${NC}" + + # Installiere Docker Compose v1 (für ältere Systeme besser kompatibel) + log "${YELLOW}Installiere Docker Compose...${NC}" + + if [ "$IS_RASPBERRY_PI" = true ]; then + # Für Raspberry Pi ist es besser, die richtige Architektur zu verwenden + if [ "$ARCH" = "armhf" ]; then + log "Installiere Docker Compose für armhf (32-bit)..." + sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-armv7" -o /usr/local/bin/docker-compose + elif [ "$ARCH" = "arm64" ]; then + log "Installiere Docker Compose für arm64 (64-bit)..." + sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-aarch64" -o /usr/local/bin/docker-compose + else + log "Verwende automatische Architekturerkennung für Docker Compose..." + sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + fi + else + # Für andere Systeme + sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + fi + + if [ $? -ne 0 ]; then + error_log "Konnte Docker Compose nicht herunterladen. Bitte manuell installieren." + exit 1 + fi + + sudo chmod +x /usr/local/bin/docker-compose + + log "${GREEN}Docker Compose wurde installiert.${NC}" + + # Starte Docker-Dienst + if command -v systemctl &> /dev/null; then + sudo systemctl enable docker + sudo systemctl start docker + elif command -v service &> /dev/null; then + sudo service docker enable + sudo service docker start + fi +} + # Prüfen ob Docker installiert ist if ! command -v docker &> /dev/null; then - error_log "Docker ist nicht installiert. Bitte installieren Sie Docker." - log "Siehe: https://docs.docker.com/get-docker/" - exit 1 + log "${YELLOW}Docker ist nicht installiert.${NC}" + read -p "Möchten Sie Docker installieren? (j/n): " install_docker_choice + if [[ "$install_docker_choice" == "j" ]]; then + install_docker + else + error_log "Docker wird für die Installation benötigt. Bitte installieren Sie Docker manuell." + log "Siehe: https://docs.docker.com/get-docker/" + exit 1 + fi fi -if ! command -v docker compose &> /dev/null; then - error_log "Docker Compose ist nicht installiert. Bitte installieren Sie Docker Compose." - log "Siehe: https://docs.docker.com/compose/install/" - exit 1 +# Prüfen ob Docker Daemon läuft +if ! docker info &> /dev/null; then + log "${YELLOW}Docker-Daemon läuft nicht. Versuche, den Dienst zu starten...${NC}" + + # Versuche, Docker zu starten + if command -v systemctl &> /dev/null; then + sudo systemctl start docker + elif command -v service &> /dev/null; then + sudo service docker start + else + error_log "Konnte Docker-Daemon nicht starten. Bitte starten Sie den Docker-Dienst manuell." + log "Starten mit: sudo systemctl start docker oder sudo service docker start" + exit 1 + fi + + # Prüfe erneut, ob Docker läuft + if ! docker info &> /dev/null; then + error_log "Docker-Daemon konnte nicht gestartet werden. Bitte starten Sie den Docker-Dienst manuell." + exit 1 + fi + + log "${GREEN}Docker-Daemon wurde erfolgreich gestartet.${NC}" +fi + +# Prüfen ob Docker Compose installiert ist +if ! command -v docker-compose &> /dev/null; then + log "${YELLOW}Docker Compose ist nicht installiert.${NC}" + read -p "Möchten Sie Docker Compose installieren? (j/n): " install_compose_choice + if [[ "$install_compose_choice" == "j" ]]; then + log "${YELLOW}Installiere Docker Compose...${NC}" + + if ! sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose; then + error_log "Konnte Docker Compose nicht herunterladen. Bitte manuell installieren." + exit 1 + fi + + sudo chmod +x /usr/local/bin/docker-compose + + log "${GREEN}Docker Compose wurde installiert.${NC}" + else + error_log "Docker Compose wird für die Installation benötigt. Bitte installieren Sie es manuell." + log "Siehe: https://docs.docker.com/compose/install/" + exit 1 + fi fi # Prüfen ob wget installiert ist (wird für healthcheck verwendet) @@ -98,7 +249,7 @@ fi # Docker-Image bauen und starten log "${YELLOW}Baue und starte Backend-Container...${NC}" -if ! docker compose up -d --build; then +if ! docker-compose up -d --build; then error_log "Docker Compose fehlgeschlagen. Siehe Fehlermeldung oben." exit 1 fi @@ -157,4 +308,4 @@ 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" \ No newline at end of file +log "Backend stoppen: docker-compose -f $BACKEND_DIR/docker-compose.yml down" \ No newline at end of file diff --git a/install-frontend.sh b/install-frontend.sh index 837666f..e13778a 100755 --- a/install-frontend.sh +++ b/install-frontend.sh @@ -29,17 +29,168 @@ if [ ! -d "$FRONTEND_DIR" ]; then exit 1 fi +# Funktion zur Installation von Docker und Docker Compose für Raspberry Pi +install_docker() { + log "${YELLOW}Docker ist nicht installiert. Installation wird gestartet...${NC}" + + # Erkenne Raspberry Pi + if [ -f /proc/device-tree/model ] && grep -q "Raspberry Pi" /proc/device-tree/model; then + log "${GREEN}Raspberry Pi erkannt. Installiere Docker für ARM-Architektur...${NC}" + IS_RASPBERRY_PI=true + else + IS_RASPBERRY_PI=false + fi + + # Aktualisiere Paketindex + if ! sudo apt-get update; then + error_log "Konnte Paketindex nicht aktualisieren. Bitte manuell installieren." + exit 1 + fi + + # Installiere erforderliche Pakete + if ! sudo apt-get install -y apt-transport-https ca-certificates curl gnupg software-properties-common; then + error_log "Konnte erforderliche Pakete nicht installieren. Bitte manuell installieren." + exit 1 + fi + + # Raspberry Pi-spezifische Installation + if [ "$IS_RASPBERRY_PI" = true ]; then + # Setze Systemarchitektur für Raspberry Pi (armhf oder arm64) + ARCH=$(dpkg --print-architecture) + log "Erkannte Systemarchitektur: ${ARCH}" + + # Installiere Docker mit convenience script (für Raspberry Pi empfohlen) + log "${YELLOW}Installiere Docker mit dem convenience script...${NC}" + curl -fsSL https://get.docker.com -o get-docker.sh + sudo sh get-docker.sh + + if [ $? -ne 0 ]; then + error_log "Docker-Installation fehlgeschlagen. Bitte manuell installieren." + exit 1 + fi + else + # Standard-Installation für andere Systeme + # Füge Docker's offiziellen GPG-Schlüssel hinzu + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - + + # Füge Docker-Repository hinzu + if ! sudo add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"; then + error_log "Konnte Docker-Repository nicht hinzufügen. Prüfen Sie, ob Ihr System unterstützt wird." + exit 1 + fi + + # Aktualisiere Paketindex erneut + sudo apt-get update + + # Installiere Docker + if ! sudo apt-get install -y docker-ce docker-ce-cli containerd.io; then + error_log "Konnte Docker nicht installieren. Bitte manuell installieren." + exit 1 + fi + fi + + # Füge aktuellen Benutzer zur Docker-Gruppe hinzu + sudo usermod -aG docker "$USER" + + log "${GREEN}Docker wurde installiert.${NC}" + log "${YELLOW}WICHTIG: Möglicherweise müssen Sie sich neu anmelden, damit die Gruppenänderung wirksam wird.${NC}" + + # Installiere Docker Compose v1 (für ältere Systeme besser kompatibel) + log "${YELLOW}Installiere Docker Compose...${NC}" + + if [ "$IS_RASPBERRY_PI" = true ]; then + # Für Raspberry Pi ist es besser, die richtige Architektur zu verwenden + if [ "$ARCH" = "armhf" ]; then + log "Installiere Docker Compose für armhf (32-bit)..." + sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-armv7" -o /usr/local/bin/docker-compose + elif [ "$ARCH" = "arm64" ]; then + log "Installiere Docker Compose für arm64 (64-bit)..." + sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-aarch64" -o /usr/local/bin/docker-compose + else + log "Verwende automatische Architekturerkennung für Docker Compose..." + sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + fi + else + # Für andere Systeme + sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + fi + + if [ $? -ne 0 ]; then + error_log "Konnte Docker Compose nicht herunterladen. Bitte manuell installieren." + exit 1 + fi + + sudo chmod +x /usr/local/bin/docker-compose + + log "${GREEN}Docker Compose wurde installiert.${NC}" + + # Starte Docker-Dienst + if command -v systemctl &> /dev/null; then + sudo systemctl enable docker + sudo systemctl start docker + elif command -v service &> /dev/null; then + sudo service docker enable + sudo service docker start + fi +} + # Prüfen ob Docker installiert ist if ! command -v docker &> /dev/null; then - error_log "Docker ist nicht installiert. Bitte installieren Sie Docker." - log "Siehe: https://docs.docker.com/get-docker/" - exit 1 + log "${YELLOW}Docker ist nicht installiert.${NC}" + read -p "Möchten Sie Docker installieren? (j/n): " install_docker_choice + if [[ "$install_docker_choice" == "j" ]]; then + install_docker + else + error_log "Docker wird für die Installation benötigt. Bitte installieren Sie Docker manuell." + log "Siehe: https://docs.docker.com/get-docker/" + exit 1 + fi fi -if ! command -v docker compose &> /dev/null; then - error_log "Docker Compose ist nicht installiert. Bitte installieren Sie Docker Compose." - log "Siehe: https://docs.docker.com/compose/install/" - exit 1 +# Prüfen ob Docker Daemon läuft +if ! docker info &> /dev/null; then + log "${YELLOW}Docker-Daemon läuft nicht. Versuche, den Dienst zu starten...${NC}" + + # Versuche, Docker zu starten + if command -v systemctl &> /dev/null; then + sudo systemctl start docker + elif command -v service &> /dev/null; then + sudo service docker start + else + error_log "Konnte Docker-Daemon nicht starten. Bitte starten Sie den Docker-Dienst manuell." + log "Starten mit: sudo systemctl start docker oder sudo service docker start" + exit 1 + fi + + # Prüfe erneut, ob Docker läuft + if ! docker info &> /dev/null; then + error_log "Docker-Daemon konnte nicht gestartet werden. Bitte starten Sie den Docker-Dienst manuell." + exit 1 + fi + + log "${GREEN}Docker-Daemon wurde erfolgreich gestartet.${NC}" +fi + +# Prüfen ob Docker Compose installiert ist +if ! command -v docker-compose &> /dev/null; then + log "${YELLOW}Docker Compose ist nicht installiert.${NC}" + read -p "Möchten Sie Docker Compose installieren? (j/n): " install_compose_choice + if [[ "$install_compose_choice" == "j" ]]; then + log "${YELLOW}Installiere Docker Compose...${NC}" + + if ! sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose; then + error_log "Konnte Docker Compose nicht herunterladen. Bitte manuell installieren." + exit 1 + fi + + sudo chmod +x /usr/local/bin/docker-compose + + log "${GREEN}Docker Compose wurde installiert.${NC}" + else + error_log "Docker Compose wird für die Installation benötigt. Bitte installieren Sie es manuell." + log "Siehe: https://docs.docker.com/compose/install/" + exit 1 + fi fi # Prüfen ob wget installiert ist (wird für healthcheck verwendet) @@ -105,7 +256,7 @@ fi # Docker-Image bauen und starten log "${YELLOW}Baue und starte Frontend-Container...${NC}" -if ! docker compose up -d --build; then +if ! docker-compose up -d --build; then error_log "Docker Compose fehlgeschlagen. Siehe Fehlermeldung oben." exit 1 fi @@ -168,4 +319,4 @@ fi log "${GREEN}=== Installation abgeschlossen ===${NC}" log "Das Frontend ist unter http://localhost:3000 erreichbar" log "Anzeigen der Logs: docker logs -f myp-frontend" -log "Frontend stoppen: docker compose -f $FRONTEND_DIR/docker-compose.yml down" \ No newline at end of file +log "Frontend stoppen: docker-compose -f $FRONTEND_DIR/docker-compose.yml down" \ No newline at end of file diff --git a/packages/reservation-platform/docker-compose.yml b/packages/reservation-platform/docker-compose.yml index f5bd3a3..d00329b 100644 --- a/packages/reservation-platform/docker-compose.yml +++ b/packages/reservation-platform/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3' +version: '2' services: frontend: