Wenn du mit Coolify arbeitest und WordPress in einem Docker-Container betreibst, stellst du dir früher oder später eine ganz zentrale Frage: Wo liegen eigentlich meine persistenten Daten? Spätestens wenn du Backups machen, Dateien prüfen oder ein Restore vorbereiten willst, suchst du nach „Persistent Storage Locations“ oder Docker-Volumes – und findest auf dem Host plötzlich kein /var/www/html. Genau hier setzt dieser Artikel an. Du bekommst eine klare Schritt-für-Schritt-Erklärung: Was Persistent Storage in Docker wirklich ist, wo du deine WordPress-Daten findest und wie du sie sauber und regelmäßig auf ein S3-kompatibles DigitalOcean Spaces-Backup sicherst.
1. Was ist Persistent Storage in Docker – und warum gibt es Volumes?
Docker-Container sind grundsätzlich ephemer. Das bedeutet:
- Container können jederzeit neu gebaut oder ersetzt werden.
- Alles, was nur im Container-Dateisystem liegt, wäre beim Löschen verloren.
Damit wichtige Daten (z. B. Uploads, Plugins, Themes, Konfigurationen) erhalten bleiben, gibt es Volumes.
Wie funktionieren Docker Volumes?
Ein Volume ist ein spezieller Speicherbereich außerhalb des Container-Layers. Der Container bindet diesen Speicher beim Start ein.
Beispiel (vereinfacht):
Host (Volume) // /var/lib/docker/volumes/xyz/_data // gemountet nach Container: /var/www/html
Der Container denkt, er schreibt nach /var/www/html.
In Wirklichkeit landen die Daten im Volume auf dem Host.
Warum gibt es das?
- Trennung von Code und Daten
- Sichere Updates von Containern
- Persistenz bei Neustarts
- Bessere Backup-Strategien
- Portabilität
Wie findest du Volumes in Coolify?
Coolify zeigt dir bei WordPress meist:
Persistent Storage: /var/www/html
Wichtig:
Das ist der Container-Pfad, nicht der Host-Pfad.
So findest du den echten Speicherort:
Schritt 1 – Container anzeigen
docker ps
Schritt 2 – Mounts prüfen
docker inspect <container-name> --format '{{range .Mounts}}{{println .Type "=>" .Source "->" .Destination}}{{end}}'
Typische Ausgabe:
volume => /var/lib/docker/volumes/wordpress_xyz/_data -> /var/www/html
Dann weißt du:
- Container-Ziel: /var/www/html
- Host-Speicher: /var/lib/docker/volumes/wordpress_xyz/_data
2. Wo liegen WordPress-Daten üblicherweise im Container?
Das offizielle WordPress-Image von Docker verwendet standardmäßig:
/var/www/html
Dort befinden sich:
- wp-content
- uploads
- themes
- plugins
- wp-config.php
Coolify bindet genau diesen Pfad persistent ein.
Du findest also:
- Im Container: /var/www/html
- Auf dem Host (bei named volumes):
/var/lib/docker/volumes/<volume-name>/_data
Wenn stattdessen ein Bind-Mount verwendet wird, siehst du im docker inspect einen echten Host-Pfad wie:
/home/coolify/applications/xyz/storage
3. Darf man Dateien im Volume per Command Line bearbeiten?
Kurz gesagt: Ja – aber mit Vorsicht.
Wann ist es okay?
- Debugging
- Notfall-Reparaturen
- Backup-Zwecke
- Plugin manuell entfernen
Wann solltest du es vermeiden?
- Während der Container aktiv schreibt
- Bei automatisierten Deployments
- Wenn du nicht genau weißt, was du tust
Besser ist oft:
docker exec -it <container> bash
Und dann innerhalb des Containers arbeiten.
4. Regelmäßige Backups auf DigitalOcean Spaces (S3-kompatibel)
Coolify bietet kein integriertes Volume-Backup-System (nur Datenbank-Backups).
Deshalb solltest du deine Volumes selbst sichern.
Hier ein einfaches Setup mit:
- tar
- s3cmd
- Retention-Regeln
- Cronjob
Voraussetzungen
Installiere:
apt install s3cmd
Konfiguriere:
s3cmd --configure
Backup-Script erstellen
Speicher das Script unter:
/usr/local/bin/wp_volume_backup.sh
nano /usr/local/bin/wp_volume_backup.sh
Script-Inhalt
#!/bin/bash
# CONFIG
VOLUME_PATH="/var/lib/docker/volumes/wordpress_xyz/_data"
BACKUP_DIR="/tmp"
BUCKET="s3://dein-space-name/wp-backups"
DATE=$(date +"%Y-%m-%d_%H-%M")
RETENTION_DAYS=14
ARCHIVE="$BACKUP_DIR/wp_volume_$DATE.tar.gz"
# Backup erstellen
tar -czf $ARCHIVE -C $VOLUME_PATH .
# Upload zu DigitalOcean Spaces
s3cmd put $ARCHIVE $BUCKET/
# Lokale Datei löschen
rm $ARCHIVE
# Alte Backups löschen (Retention)
s3cmd ls $BUCKET/ | while read -r line;
do
FILE_DATE=$(echo $line | awk '{print $1}')
FILE_NAME=$(echo $line | awk '{print $4}')
if [[ $(date -d "$FILE_DATE" +%s) -lt $(date -d "$RETENTION_DAYS days ago" +%s) ]]; then
s3cmd del $FILE_NAME
fi
done
Dann ausführbar machen:
chmod +x /usr/local/bin/wp_volume_backup.sh
Cronjob für jede Nacht um 2:45 Uhr
crontab -e
Eintrag:
45 2 * * * /usr/local/bin/wp_volume_backup.sh >> /var/log/wp_volume_backup.log 2>&1
Das bedeutet:
- Minute: 45
- Stunde: 2
- Jeden Tag
- Jede Woche
- Jeder Monat
Fazit
Wenn du WordPress mit Docker in Coolify betreibst, musst du verstehen:
- Was Persistent Storage ist
- Wie Docker Volumes funktionieren
- Wo deine echten Daten liegen
- Wie du sie sicherst
Coolify bietet kein Out-of-the-Box Volume-Backup an – nur Datenbank-Backups.
Deshalb solltest du dich selbst um deine Volumes kümmern.
Mit einem einfachen Shell-Script, einem Cronjob und S3-kompatiblem Storage wie DigitalOcean Spaces hast du eine saubere, kontrollierbare und professionelle Lösung.
Persistent Storage ist kein Nebenthema – es ist das Fundament deiner Installation. Wenn du Docker produktiv nutzt, musst du Volumes verstehen und beherrschen.
