Behebe YAML-Syntax-Fehler in Docker Compose und verbessere Installationsskripte
• Korrigiere YAML-Syntax-Fehler in docker-compose.yml-Dateien • Füge automatische Docker-Installation für Raspberry Pi hinzu • Aktualisiere Installationsdokumentation mit Fehlerbehebungstipps • Verwende durchgängig docker-compose statt docker compose für bessere Kompatibilität 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
e143f4ab16
commit
05bd3f3f22
131
INSTALL.md
131
INSTALL.md
@ -4,9 +4,20 @@ Dieses Dokument beschreibt die Installation des MYP-Systems, bestehend aus einem
|
|||||||
|
|
||||||
## Systemanforderungen
|
## Systemanforderungen
|
||||||
|
|
||||||
- Docker und Docker Compose
|
- **Frontend**:
|
||||||
- Zwei Raspberry Pi (oder andere Linux-basierte Computer)
|
- Raspberry Pi 3B+ oder neuer (empfohlen: Pi 4 mit mindestens 2GB RAM)
|
||||||
- Netzwerkverbindung zwischen den Geräten
|
- 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
|
## 1. Installation des Backends
|
||||||
|
|
||||||
@ -22,10 +33,18 @@ ssh pi@raspberry-backend
|
|||||||
# In das Projektverzeichnis wechseln
|
# In das Projektverzeichnis wechseln
|
||||||
cd /home/pi/myp
|
cd /home/pi/myp
|
||||||
|
|
||||||
# Installations-Skript ausführen
|
# Installations-Skript ausführbar machen und ausführen
|
||||||
|
chmod +x install-backend.sh
|
||||||
./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.
|
Nach erfolgreicher Installation ist das Backend unter `http://raspberry-backend:5000` erreichbar.
|
||||||
|
|
||||||
## 2. Installation des Frontends
|
## 2. Installation des Frontends
|
||||||
@ -42,10 +61,17 @@ ssh pi@raspberry-frontend
|
|||||||
# In das Projektverzeichnis wechseln
|
# In das Projektverzeichnis wechseln
|
||||||
cd /home/pi/myp
|
cd /home/pi/myp
|
||||||
|
|
||||||
# Installations-Skript ausführen
|
# Installations-Skript ausführbar machen und ausführen
|
||||||
|
chmod +x install-frontend.sh
|
||||||
./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.
|
Nach erfolgreicher Installation ist das Frontend unter `http://raspberry-frontend:3000` erreichbar.
|
||||||
|
|
||||||
## 3. Konfiguration der Verbindung zwischen Frontend und Backend
|
## 3. Konfiguration der Verbindung zwischen Frontend und Backend
|
||||||
@ -71,8 +97,8 @@ NEXT_PUBLIC_API_URL=http://raspberry-backend:5000
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /home/pi/myp/packages/reservation-platform
|
cd /home/pi/myp/packages/reservation-platform
|
||||||
docker compose down
|
docker-compose down
|
||||||
docker compose up -d
|
docker-compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
## 4. Wartung und Fehlerbehebung
|
## 4. Wartung und Fehlerbehebung
|
||||||
@ -94,13 +120,13 @@ docker logs -f myp-frontend
|
|||||||
**Backend:**
|
**Backend:**
|
||||||
```bash
|
```bash
|
||||||
cd /pfad/zum/backend
|
cd /pfad/zum/backend
|
||||||
docker compose restart
|
docker-compose restart
|
||||||
```
|
```
|
||||||
|
|
||||||
**Frontend:**
|
**Frontend:**
|
||||||
```bash
|
```bash
|
||||||
cd /pfad/zum/frontend
|
cd /pfad/zum/frontend
|
||||||
docker compose restart
|
docker-compose restart
|
||||||
```
|
```
|
||||||
|
|
||||||
### Datenbank-Reset
|
### Datenbank-Reset
|
||||||
@ -110,11 +136,65 @@ Sollte die Datenbank zurückgesetzt werden müssen:
|
|||||||
```bash
|
```bash
|
||||||
# Auf dem Backend-Raspberry Pi
|
# Auf dem Backend-Raspberry Pi
|
||||||
cd /home/pi/myp/backend
|
cd /home/pi/myp/backend
|
||||||
docker compose down
|
docker-compose down
|
||||||
rm -f instance/myp.db
|
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
|
## 5. Automatischer Start beim Systemstart
|
||||||
|
|
||||||
Die Docker-Container sind so konfiguriert, dass sie automatisch beim Neustart der Geräte starten (`restart: unless-stopped`).
|
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
|
```bash
|
||||||
# Auf dem Backend-Raspberry Pi
|
# 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
|
# 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
|
## 6. Technische Details
|
||||||
@ -135,3 +215,28 @@ echo "cd /home/pi/myp/packages/reservation-platform && docker compose up -d" >>
|
|||||||
- Das Frontend ist eine Next.js-Anwendung
|
- Das Frontend ist eine Next.js-Anwendung
|
||||||
- Beide Komponenten laufen in Docker-Containern mit Host-Netzwerkanbindung
|
- Beide Komponenten laufen in Docker-Containern mit Host-Netzwerkanbindung
|
||||||
- Die Datenbanken werden in Docker-Volumes persistiert
|
- 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)
|
@ -1,4 +1,4 @@
|
|||||||
version: '3'
|
version: '2'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
backend:
|
backend:
|
||||||
@ -10,7 +10,7 @@ services:
|
|||||||
- DATABASE_PATH=${DATABASE_PATH:-instance/myp.db}
|
- DATABASE_PATH=${DATABASE_PATH:-instance/myp.db}
|
||||||
- TAPO_USERNAME=${TAPO_USERNAME:-till.tomczak@mercedes-benz.com}
|
- TAPO_USERNAME=${TAPO_USERNAME:-till.tomczak@mercedes-benz.com}
|
||||||
- TAPO_PASSWORD=${TAPO_PASSWORD:-744563017196A}
|
- 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
|
- FLASK_APP=app.py
|
||||||
- PYTHONUNBUFFERED=1
|
- PYTHONUNBUFFERED=1
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -29,18 +29,169 @@ if [ ! -d "$BACKEND_DIR" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Prüfen ob Docker installiert ist
|
# Funktion zur Installation von Docker und Docker Compose für Raspberry Pi
|
||||||
if ! command -v docker &> /dev/null; then
|
install_docker() {
|
||||||
error_log "Docker ist nicht installiert. Bitte installieren Sie Docker."
|
log "${YELLOW}Docker ist nicht installiert. Installation wird gestartet...${NC}"
|
||||||
log "Siehe: https://docs.docker.com/get-docker/"
|
|
||||||
|
# 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
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! command -v docker compose &> /dev/null; then
|
# Installiere erforderliche Pakete
|
||||||
error_log "Docker Compose ist nicht installiert. Bitte installieren Sie Docker Compose."
|
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
|
||||||
|
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
|
||||||
|
|
||||||
|
# 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/"
|
log "Siehe: https://docs.docker.com/compose/install/"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Prüfen ob wget installiert ist (wird für healthcheck verwendet)
|
# Prüfen ob wget installiert ist (wird für healthcheck verwendet)
|
||||||
if ! command -v wget &> /dev/null; then
|
if ! command -v wget &> /dev/null; then
|
||||||
@ -98,7 +249,7 @@ fi
|
|||||||
|
|
||||||
# Docker-Image bauen und starten
|
# Docker-Image bauen und starten
|
||||||
log "${YELLOW}Baue und starte Backend-Container...${NC}"
|
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."
|
error_log "Docker Compose fehlgeschlagen. Siehe Fehlermeldung oben."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@ -157,4 +308,4 @@ fi
|
|||||||
log "${GREEN}=== Installation abgeschlossen ===${NC}"
|
log "${GREEN}=== Installation abgeschlossen ===${NC}"
|
||||||
log "Das Backend ist unter http://localhost:5000 erreichbar"
|
log "Das Backend ist unter http://localhost:5000 erreichbar"
|
||||||
log "Anzeigen der Logs: docker logs -f myp-backend"
|
log "Anzeigen der Logs: docker logs -f myp-backend"
|
||||||
log "Backend stoppen: docker compose -f $BACKEND_DIR/docker-compose.yml down"
|
log "Backend stoppen: docker-compose -f $BACKEND_DIR/docker-compose.yml down"
|
@ -29,18 +29,169 @@ if [ ! -d "$FRONTEND_DIR" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Prüfen ob Docker installiert ist
|
# Funktion zur Installation von Docker und Docker Compose für Raspberry Pi
|
||||||
if ! command -v docker &> /dev/null; then
|
install_docker() {
|
||||||
error_log "Docker ist nicht installiert. Bitte installieren Sie Docker."
|
log "${YELLOW}Docker ist nicht installiert. Installation wird gestartet...${NC}"
|
||||||
log "Siehe: https://docs.docker.com/get-docker/"
|
|
||||||
|
# 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
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! command -v docker compose &> /dev/null; then
|
# Installiere erforderliche Pakete
|
||||||
error_log "Docker Compose ist nicht installiert. Bitte installieren Sie Docker Compose."
|
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
|
||||||
|
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
|
||||||
|
|
||||||
|
# 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/"
|
log "Siehe: https://docs.docker.com/compose/install/"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Prüfen ob wget installiert ist (wird für healthcheck verwendet)
|
# Prüfen ob wget installiert ist (wird für healthcheck verwendet)
|
||||||
if ! command -v wget &> /dev/null; then
|
if ! command -v wget &> /dev/null; then
|
||||||
@ -105,7 +256,7 @@ fi
|
|||||||
|
|
||||||
# Docker-Image bauen und starten
|
# Docker-Image bauen und starten
|
||||||
log "${YELLOW}Baue und starte Frontend-Container...${NC}"
|
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."
|
error_log "Docker Compose fehlgeschlagen. Siehe Fehlermeldung oben."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@ -168,4 +319,4 @@ fi
|
|||||||
log "${GREEN}=== Installation abgeschlossen ===${NC}"
|
log "${GREEN}=== Installation abgeschlossen ===${NC}"
|
||||||
log "Das Frontend ist unter http://localhost:3000 erreichbar"
|
log "Das Frontend ist unter http://localhost:3000 erreichbar"
|
||||||
log "Anzeigen der Logs: docker logs -f myp-frontend"
|
log "Anzeigen der Logs: docker logs -f myp-frontend"
|
||||||
log "Frontend stoppen: docker compose -f $FRONTEND_DIR/docker-compose.yml down"
|
log "Frontend stoppen: docker-compose -f $FRONTEND_DIR/docker-compose.yml down"
|
@ -1,4 +1,4 @@
|
|||||||
version: '3'
|
version: '2'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
frontend:
|
frontend:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user