# Docker Build Fix: Upload-Dateien ausschließen ## Problem Der Docker Build schlug fehl mit: ``` no space left on device ``` **Ursache**: Die großen MP3-Dateien in `public/uploads/` wurden in den Build-Context kopiert und verbrauchten zu viel Speicherplatz. ## Lösung Eine `.dockerignore` Datei wurde erstellt, die folgende Dateien/Ordner vom Build ausschließt: - `public/uploads/*` - Upload-Dateien (werden als Volume gemountet) - `data/*` - Datenbank-Dateien (werden als Volume gemountet) - `node_modules` - werden während des Builds installiert - `.next`, `out`, `build` - Build-Artefakte - Backup-Dateien, Logs, temporäre Dateien ## Zusätzliche Maßnahmen Falls der Build weiterhin Probleme macht: ### 1. Docker aufräumen ```bash # Entferne nicht verwendete Images docker image prune -a # Entferne nicht verwendete Container docker container prune # Entferne nicht verwendete Volumes (VORSICHT: kann Daten löschen!) docker volume prune # Kompletter Cleanup (alles außer laufenden Containern) docker system prune -a ``` ### 2. Speicherplatz prüfen ```bash # Zeige Speicherplatz df -h # Zeige Docker-Speicherverbrauch docker system df # Zeige größte Images docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}" | sort -k3 -h ``` ### 3. Build-Kontext prüfen ```bash # Prüfe was in den Build-Context kopiert wird docker build --no-cache --progress=plain -t test-build . 2>&1 | grep "transferring context" ``` ### 4. Upload-Dateien manuell ausschließen Falls die `.dockerignore` nicht greift, können Upload-Dateien vorübergehend verschoben werden: ```bash # Vor dem Build mv public/uploads public/uploads.backup mkdir -p public/uploads touch public/uploads/.gitkeep # Build durchführen docker compose build # Uploads wiederherstellen rm -rf public/uploads mv public/uploads.backup public/uploads ``` ## Wichtig Die Upload-Dateien werden **nicht** ins Docker-Image kopiert, sondern als Volume gemountet: ```yaml volumes: - ./public/uploads:/app/public/uploads ``` Das bedeutet: - Upload-Dateien bleiben auf dem Host-System - Sie werden zur Laufzeit gemountet - Sie sollten **nicht** ins Image kopiert werden (spart viel Speicher) ## Verifikation Nach dem Build sollte das Image deutlich kleiner sein: ```bash # Zeige Image-Größe docker images hoerdle-hoerdle # Prüfe ob Uploads im Image sind docker run --rm hoerdle-hoerdle ls -lh /app/public/uploads # Sollte nur .gitkeep oder Covers zeigen, keine MP3-Dateien ```