From 78d19daf14f0246312824cfd6ed2ec5a2cbb22b5 Mon Sep 17 00:00:00 2001 From: Till Tomczak Date: Tue, 1 Apr 2025 10:03:28 +0200 Subject: [PATCH] =?UTF-8?q?Umfassende=20Fehlerbehandlung=20f=C3=BCr=20Dock?= =?UTF-8?q?er-Daemon-Probleme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Prüfe vor dem Build, ob der Docker-Daemon läuft und versuche ihn zu starten - Prüfe Benutzerberechtigungen für Docker und gebe hilfreiche Fehlermeldungen aus - Überprüfe explizit, ob die benötigten Base-Images lokal vorhanden sind - Erhöhe Timeouts auf 5 Minuten für zuverlässigere Builds auf langsamen Systemen - Verbesserte Fehlermeldungen mit konkreten Handlungsanweisungen für den Benutzer 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- install-backend.sh | 56 +++++++++++++++++++++++++++++++++++++++------ install-frontend.sh | 56 +++++++++++++++++++++++++++++++++++++++------ 2 files changed, 98 insertions(+), 14 deletions(-) diff --git a/install-backend.sh b/install-backend.sh index 32b71df..cb1e03d 100755 --- a/install-backend.sh +++ b/install-backend.sh @@ -322,17 +322,59 @@ fi log "${YELLOW}Baue und starte Backend-Container...${NC}" log "${YELLOW}Dies kann auf einem Raspberry Pi einige Minuten dauern - bitte geduldig sein${NC}" +# Prüfe, ob Docker-Daemon läuft +if ! docker info &>/dev/null; then + log "${YELLOW}Docker-Daemon scheint nicht zu laufen. Versuche zu starten...${NC}" + + # Versuche Docker zu starten + if command -v systemctl &>/dev/null; then + sudo systemctl start docker || true + sleep 5 + elif command -v service &>/dev/null; then + sudo service docker start || true + sleep 5 + fi + + # Prüfe erneut, ob Docker jetzt läuft + if ! docker info &>/dev/null; then + error_log "Docker-Daemon konnte nicht gestartet werden." + log "Führen Sie vor der Installation bitte folgende Befehle aus:" + log " sudo systemctl start docker" + log " sudo systemctl enable docker" + log "Starten Sie dann das Installationsskript erneut." + exit 1 + fi +fi + +# Docker-Rechte prüfen +if ! docker ps &>/dev/null; then + error_log "Sie haben keine Berechtigung, Docker ohne sudo zu verwenden." + log "Bitte führen Sie folgenden Befehl aus und melden Sie sich danach neu an:" + log " sudo usermod -aG docker $USER" + exit 1 +fi + +# Prüfen, ob erforderliche Basis-Images lokal verfügbar sind +if ! docker image inspect python:3-slim &>/dev/null; then + log "${YELLOW}Basis-Image wird gedownloaded, dies kann einige Zeit dauern...${NC}" + if ! docker pull python:3-slim; then + error_log "Konnte Basis-Image nicht herunterladen." + log "Prüfen Sie Ihre Internetverbindung oder verwenden Sie ein bereits vorhandenes Image." + exit 1 + fi +fi + # Erhöhe Docker-Timeout für langsame Verbindungen und Raspberry Pi -export DOCKER_CLIENT_TIMEOUT=120 -export COMPOSE_HTTP_TIMEOUT=120 +export DOCKER_CLIENT_TIMEOUT=300 +export COMPOSE_HTTP_TIMEOUT=300 # Verwende die richtige Docker Compose Version if [ "${DOCKER_COMPOSE_V2:-false}" = true ]; then # Docker Compose V2 Plugin (docker compose) - log "Baue lokales Image (ohne Pull-Versuch)..." - if ! docker compose build --no-cache --pull=false; then + log "Baue lokales Image..." + if ! docker compose build --no-cache; then error_log "Docker Compose Build (v2) fehlgeschlagen. Versuche mit v1 Format..." - if ! docker-compose build --no-cache --pull=false; then + if ! docker-compose build --no-cache; then error_log "Docker Compose Build fehlgeschlagen. Siehe Fehlermeldung oben." exit 1 fi @@ -348,8 +390,8 @@ if [ "${DOCKER_COMPOSE_V2:-false}" = true ]; then fi else # Docker Compose V1 (docker-compose) - log "Baue lokales Image (ohne Pull-Versuch)..." - if ! docker-compose build --no-cache --pull=false; then + log "Baue lokales Image..." + if ! docker-compose build --no-cache; then error_log "Docker Compose Build fehlgeschlagen. Siehe Fehlermeldung oben." exit 1 fi diff --git a/install-frontend.sh b/install-frontend.sh index c8d01ab..d831f9b 100755 --- a/install-frontend.sh +++ b/install-frontend.sh @@ -329,17 +329,59 @@ fi log "${YELLOW}Baue und starte Frontend-Container...${NC}" log "${YELLOW}Dies kann auf einem Raspberry Pi mehrere Minuten dauern - bitte geduldig sein${NC}" +# Prüfe, ob Docker-Daemon läuft +if ! docker info &>/dev/null; then + log "${YELLOW}Docker-Daemon scheint nicht zu laufen. Versuche zu starten...${NC}" + + # Versuche Docker zu starten + if command -v systemctl &>/dev/null; then + sudo systemctl start docker || true + sleep 5 + elif command -v service &>/dev/null; then + sudo service docker start || true + sleep 5 + fi + + # Prüfe erneut, ob Docker jetzt läuft + if ! docker info &>/dev/null; then + error_log "Docker-Daemon konnte nicht gestartet werden." + log "Führen Sie vor der Installation bitte folgende Befehle aus:" + log " sudo systemctl start docker" + log " sudo systemctl enable docker" + log "Starten Sie dann das Installationsskript erneut." + exit 1 + fi +fi + +# Docker-Rechte prüfen +if ! docker ps &>/dev/null; then + error_log "Sie haben keine Berechtigung, Docker ohne sudo zu verwenden." + log "Bitte führen Sie folgenden Befehl aus und melden Sie sich danach neu an:" + log " sudo usermod -aG docker $USER" + exit 1 +fi + +# Prüfen, ob erforderliche Basis-Images lokal verfügbar sind +if ! docker image inspect node:lts-alpine &>/dev/null; then + log "${YELLOW}Basis-Image wird gedownloaded, dies kann einige Zeit dauern...${NC}" + if ! docker pull node:lts-alpine; then + error_log "Konnte Basis-Image nicht herunterladen." + log "Prüfen Sie Ihre Internetverbindung oder verwenden Sie ein bereits vorhandenes Image." + exit 1 + fi +fi + # Erhöhe Docker-Timeout für langsame Verbindungen und Raspberry Pi -export DOCKER_CLIENT_TIMEOUT=120 -export COMPOSE_HTTP_TIMEOUT=120 +export DOCKER_CLIENT_TIMEOUT=300 +export COMPOSE_HTTP_TIMEOUT=300 # Verwende die richtige Docker Compose Version if [ "${DOCKER_COMPOSE_V2:-false}" = true ]; then # Docker Compose V2 Plugin (docker compose) - log "Baue lokales Image (ohne Pull-Versuch)..." - if ! docker compose build --no-cache --pull=false; then + log "Baue lokales Image..." + if ! docker compose build --no-cache; then error_log "Docker Compose Build (v2) fehlgeschlagen. Versuche mit v1 Format..." - if ! docker-compose build --no-cache --pull=false; then + if ! docker-compose build --no-cache; then error_log "Docker Compose Build fehlgeschlagen. Siehe Fehlermeldung oben." exit 1 fi @@ -355,8 +397,8 @@ if [ "${DOCKER_COMPOSE_V2:-false}" = true ]; then fi else # Docker Compose V1 (docker-compose) - log "Baue lokales Image (ohne Pull-Versuch)..." - if ! docker-compose build --no-cache --pull=false; then + log "Baue lokales Image..." + if ! docker-compose build --no-cache; then error_log "Docker Compose Build fehlgeschlagen. Siehe Fehlermeldung oben." exit 1 fi