Files
Projektarbeit-MYP/README-Docker-Troubleshooting.md

4.4 KiB

Docker Build Troubleshooting - MYP System

Lösungen für häufige Docker-Build-Probleme beim MYP (Manage Your Printers) System.

🐛 Problem: Package 'ping' has no installation candidate

Fehlermeldung:

E: Package 'ping' has no installation candidate

Lösung:

Das Paket ping ist ein virtuelles Paket. Verwende stattdessen iputils-ping.

Korrigiertes Dockerfile:

RUN apt-get update && apt-get install -y --no-install-recommends \
    curl \
    iputils-ping \
    sqlite3 \
    openssl \
    && rm -rf /var/lib/apt/lists/*

🐛 Problem: Docker Compose nicht verfügbar in WSL2

Fehlermeldung:

The command 'docker-compose' could not be found in this WSL 2 distro.

Lösungen:

Option 1: Docker Desktop WSL2 Integration

  1. Öffne Docker Desktop
  2. Gehe zu Settings → Resources → WSL Integration
  3. Aktiviere WSL2-Integration für deine Distribution

Option 2: Manueller Docker Compose Download

sudo curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Option 3: Verwende das vereinfachte Dockerfile

# Verwende Dockerfile.simple für weniger Komplexität
docker build -f Dockerfile.simple -t myp-system:test .

🐛 Problem: Frontend-Build-Fehler

Fehlermeldung:

COPY failed: file not found in build context

Lösung:

Stelle sicher, dass alle erforderlichen Dateien existieren:

# Prüfe ob package.json existiert
ls -la backend/package.json

# Erstelle fehlende Verzeichnisse
mkdir -p backend/static/css
mkdir -p backend/templates

Vereinfachtes Dockerfile ohne Node.js:

# Verwende Dockerfile.simple ohne Frontend-Build
FROM python:3.11-slim-bullseye
# ... nur Python-Dependencies

🐛 Problem: Datenbankpfad-Probleme

Fehlermeldung:

sqlite3.OperationalError: unable to open database file

Lösung:

Korrekte Datenbankpfad-Konfiguration:

In utils/utilities_collection.py:

DATABASE_PATH = "database/myp.db"  # Relativ zu backend/

Docker-Volumes:

volumes:
  - myp-database:/app/database

🛠️ Debugging-Befehle

Container-Status prüfen

# Build-Logs anzeigen
docker build -f Dockerfile.simple -t myp-system:debug . --progress=plain

# Container starten mit Debug-Output
docker run --rm -it myp-system:debug bash

# Container-Logs live verfolgen
docker logs -f container_name

Verzeichnisstruktur prüfen

# Lokale Struktur
find . -name "*.py" | head -10
ls -la backend/

# Im Container
docker run --rm -it myp-system:debug ls -la /app/

Network-Tests

# Container-Netzwerk testen
docker run --rm myp-system:debug ping -c 2 google.com

# Port-Tests
docker run --rm -p 8080:5000 myp-system:debug
curl http://localhost:8080/

🔧 Schnell-Fixes

1. Vereinfachtes Setup

# Verwende setup-docker.sh für automatische Installation
sudo ./setup-docker.sh

2. Ohne Docker Compose

# Direkter Docker-Build
docker build -f Dockerfile.simple -t myp-system .
docker run -d -p 80:5000 --name myp-http myp-system
docker run -d -p 443:5000 --name myp-https myp-system
docker run -d -p 5000:5000 --name myp-dev myp-system

3. Test-Build

# Verwende Test-Skript
./test-docker-build.sh

📋 Build-Checkliste

Vor dem Docker-Build prüfen:

  • backend/requirements.txt existiert
  • backend/package.json existiert
  • database/ Verzeichnis existiert
  • Dockerfile.simple ist verfügbar
  • Docker-Daemon läuft
  • Ausreichend Speicherplatz (>2GB)

🎯 Produktions-Setup

Für stabiles Produktions-Deployment:

# 1. System vorbereiten
sudo ./setup-docker.sh

# 2. Container starten
docker-compose up -d

# 3. Status prüfen
docker-compose ps
docker-compose logs -f

# 4. Health-Checks
curl -f http://localhost:80/
curl -k -f https://localhost:443/
curl -f http://localhost:5000/

📞 Support

Bei weiteren Problemen:

  1. Logs sammeln:

    docker-compose logs > docker-logs.txt
    ./setup-docker.sh > setup-logs.txt
    
  2. System-Info:

    docker --version
    docker-compose --version
    df -h
    free -h
    
  3. Fehler melden mit vollständigen Log-Ausgaben

Mercedes-Benz TBA Marienfelde
Autor: Till Tomczak
E-Mail: till.tomczak@mercedes-benz.com