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
|
||||
|
||||
- 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
|
||||
@ -135,3 +215,28 @@ echo "cd /home/pi/myp/packages/reservation-platform && docker compose up -d" >>
|
||||
- Das Frontend ist eine Next.js-Anwendung
|
||||
- Beide Komponenten laufen in Docker-Containern mit Host-Netzwerkanbindung
|
||||
- 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)
|
@ -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"}}
|
||||
|
@ -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:
|
||||
|
@ -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"
|
||||
log "Backend stoppen: docker-compose -f $BACKEND_DIR/docker-compose.yml down"
|
@ -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"
|
||||
log "Frontend stoppen: docker-compose -f $FRONTEND_DIR/docker-compose.yml down"
|
@ -1,4 +1,4 @@
|
||||
version: '3'
|
||||
version: '2'
|
||||
|
||||
services:
|
||||
frontend:
|
||||
|
Loading…
x
Reference in New Issue
Block a user