Wo sind die Volumes für Persistent Storage für eine WordPress Installation mit Docker in Coolify?

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.