Connecteur Volume Docker 🐳

Sauvegarde un volume Docker (données d'un conteneur : base embarquée, uploads, état applicatif…) en l'archivant comme un répertoire. Réutilise le moteur du connecteur Fichiers.

  • Image : ilygo/bridge-files:1 (la même que le connecteur Fichiers)
  • Sous-commande : ilygo-bridge docker-volume
  • Principe : un volume Docker est un répertoire monté ; on l'archive en tar.

Variables d'environnement

En plus des variables communes :

Variable Obligatoire Description
FILES_PATH oui Point de montage du volume dans le conteneur bridge (ex : /data)

Quand l'utiliser

  • Le conteneur applicatif stocke son état dans un named volume (ex : pgdata, wp-uploads, grafana-data).
  • Vous voulez sauvegarder le volume sans connaître la techno interne (approche fichier).

Si le volume contient une base de données active, préférez le connecteur DB dédié (PostgreSQL/MySQL/MongoDB) qui produit un dump cohérent. Sauvegarder un volume de DB « à chaud » au niveau fichier peut capturer un état incohérent. Pour un volume de DB, arrêtez le conteneur DB pendant le backup, ou utilisez le connecteur DB.

Déploiement (docker-compose)

services:
  app:
    image: mon-app:latest
    volumes:
      - app_state:/var/lib/app

  ilygo-bridge:
    image: ilygo/bridge-files:1
    command: ["docker-volume"]      # sous-commande explicite (l'image files par défaut fait "files")
    restart: unless-stopped
    networks: [default]
    environment:
      ILYGO_ENDPOINT: https://backup.example/api/v1
      ILYGO_API_KEY: ik_xxx
      ILYGO_PASSPHRASE: ${ILYGO_PASSPHRASE}
      ILYGO_RESTORE_SECRET: 3f87d2022d95...
      ILYGO_LABEL: app-state-volume
      FILES_PATH: /data
    volumes:
      - app_state:/data:ro          # le MÊME volume, monté en lecture dans le bridge

volumes:
  app_state:

Note : l'ENTRYPOINT de l'image ilygo/bridge-files:1 lance files par défaut. Pour le mode volume, surchargez avec command: ["docker-volume"] (comportement identique, libellé distinct dans la console).

Mécanisme de backup / restauration

Identique au connecteur Fichiers :

  • Backup : tar récursif de FILES_PATH → zstd → chiffrement.
  • Restore : side_by_side extrait dans <FILES_PATH>.restored ; in_place extrait dans FILES_PATH (exige confirm_destructive + montage en écriture).

Bonnes pratiques

  • Volume de DB : arrêtez le conteneur DB avant le backup (docker compose stop app puis backup puis restart), ou utilisez le connecteur DB.
  • Cohérence : pour un état applicatif sensible, planifiez le backup dans une fenêtre de faible activité.
  • Restauration : restaurez dans un volume neuf (side_by_side), montez-le sur un conteneur de test, validez, puis basculez.

Dépannage

Symptôme Cause Solution
no such file or directory volume non monté sur le bridge Vérifiez volumes: et le nom du volume
données incohérentes après restore volume de DB sauvegardé à chaud Utilisez le connecteur DB, ou arrêtez la DB pendant le backup
read-only file system au restore volume monté :ro Montez en écriture

Limites & roadmap

  • Mêmes limites que le connecteur Fichiers (tar en mémoire, pas d'incrémental en v1).
  • Roadmap : intégration optionnelle d'un pre-backup hook (ex : docker pause) pour figer le conteneur le temps de l'archivage.