Stockage et volumes
Stockage persistant pour vos conteneurs, avec prise en charge du disque local, S3 et Cloudflare R2 comme backends de stockage.
Que sont les volumes
Par défaut, les systèmes de fichiers des conteneurs sont éphémères -- toutes les données écrites à l'intérieur d'un conteneur sont perdues lorsque le conteneur redémarre ou est redéployé. Les volumes résolvent ce problème en fournissant un stockage persistant qui survit aux événements du cycle de vie du conteneur.
Les cas d'utilisation courants pour les volumes incluent :
- Répertoires de données de base de données (PostgreSQL, MySQL, MongoDB)
- Fichiers et médias uploadés par les utilisateurs
- Logs applicatifs qui doivent persister
- Configuration partagée entre conteneurs
- Répertoires de cache qui doivent survivre aux redémarrages
Création de volumes persistants
Vous pouvez créer des volumes via le tableau de bord ou l'API.
Via le tableau de bord :
- Accédez à l'onglet Paramètres → Stockage de votre application.
- Cliquez sur Ajouter un volume.
- Saisissez un nom de volume (par ex.,
uploads) et le chemin de montage dans le conteneur. - Définissez éventuellement une limite de taille.
- Cliquez sur Créer.
Via l'API :
curl -X POST https://your-server:9000/api/apps/my-app/mounts \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "uploads",
"mount_path": "/app/uploads",
"size_limit_mb": 5120
}'Montage de volumes dans les conteneurs
Lorsque vous créez un volume, vous spécifiez le chemin à l'intérieur du conteneur où il sera monté. Les données du volume sont stockées sur le système de fichiers de l'hôte et montées par liaison dans le conteneur au chemin spécifié.
services:
web:
image: my-app:latest
volumes:
- uploads:/app/uploads
- logs:/var/log/app
volumes:
uploads:
logs:Lors du déploiement via Docker Compose, sh0 crée et gère automatiquement les volumes nommés définis dans votre fichier compose.
/app). Cela remplacerait votre code déployé par ce qui se trouve sur le volume. Montez les volumes dans des sous-répertoires comme /app/data ou /app/uploads à la place.Chemins des volumes et permissions
sh0 stocke les données de volume sur l'hôte à :
/var/lib/sh0/volumes/{stack_id}/{volume_name}Les permissions sont définies pour correspondre à l'utilisateur du conteneur. Si votre application s'exécute en tant qu'utilisateur non-root (ce que sh0 impose par défaut), le répertoire du volume appartient à l'UID/GID de cet utilisateur.
id et assurez-vous que le répertoire du volume a la propriété correspondante. Vous pouvez corriger les permissions depuis le terminal sh0.Fournisseurs de stockage
En plus des volumes locaux, sh0 prend en charge les fournisseurs de stockage externes pour les sauvegardes et le stockage objet.
Disque local
Le backend de stockage par défaut. Les volumes sont stockés directement sur le système de fichiers du serveur. C'est l'option la plus simple et offre les meilleures performances pour la plupart des charges de travail.
Amazon S3
Configurez un bucket S3 pour les sauvegardes et le stockage de fichiers volumineux. Accédez à Paramètres → Fournisseurs de stockage pour ajouter vos identifiants S3.
curl -X POST https://your-server:9000/api/storage-providers \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "production-backups",
"type": "s3",
"bucket": "my-backups",
"region": "us-east-1",
"access_key_id": "AKIA...",
"secret_access_key": "..."
}'Cloudflare R2
Cloudflare R2 est un stockage objet compatible S3 avec zéro frais de trafic sortant. sh0 prend en charge R2 nativement -- configurez-le de la même manière que S3, en utilisant votre point de terminaison R2 :
curl -X POST https://your-server:9000/api/storage-providers \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "r2-backups",
"type": "s3",
"bucket": "my-backups",
"endpoint": "https://ACCOUNT_ID.r2.cloudflarestorage.com",
"access_key_id": "...",
"secret_access_key": "..."
}'Gestion du stockage
Le panneau Stockage dans le tableau de bord affiche tous les volumes d'un stack, leurs tailles et à quels conteneurs ils sont montés. Depuis ici vous pouvez :
- Parcourir les fichiers : Utiliser le gestionnaire de fichiers intégré pour voir le contenu du volume.
- Télécharger des fichiers : Exporter des fichiers individuels ou des répertoires entiers.
- Redimensionner : Augmenter la limite de taille d'un volume.
- Supprimer : Supprimer un volume et toutes ses données (nécessite une confirmation).
- Sauvegarder : Déclencher une sauvegarde manuelle vers un fournisseur de stockage configuré.