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'
ENTRYPOINTde l'imageilygo/bridge-files:1lancefilespar défaut. Pour le mode volume, surchargez aveccommand: ["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_sideextrait dans<FILES_PATH>.restored;in_placeextrait dansFILES_PATH(exigeconfirm_destructive+ montage en écriture).
Bonnes pratiques
- Volume de DB : arrêtez le conteneur DB avant le backup (
docker compose stop apppuis 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.