Umfassende Fehlerbehandlung für Docker-Daemon-Probleme

- 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 <noreply@anthropic.com>
This commit is contained in:
Till Tomczak 2025-04-01 10:03:28 +02:00
parent ffefd51c0d
commit 78d19daf14
2 changed files with 98 additions and 14 deletions

View File

@ -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

View File

@ -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