Stacks
Un stack est l'unité d'organisation de premier niveau dans sh0. Il regroupe les applications et services liés, fournissant une configuration partagée et une vue unifiée de votre projet.
Qu'est-ce qu'un stack ?
Un stack représente un projet ou un produit composé d'une ou plusieurs applications et services. Par exemple, un stack d'application web typique pourrait inclure :
- Une application frontend (React, Vue, Svelte)
- Une API backend (Node.js, Python, Go)
- Une base de données PostgreSQL
- Un cache Redis
- Un worker en arrière-plan
Tous ces éléments résident dans un seul stack, partagent des variables d'environnement et peuvent communiquer via un réseau Docker privé. Lorsque vous ouvrez un stack dans le tableau de bord, vous voyez tous ses composants en un coup d'œil.
Stacks vs Applications vs Services
Comprendre la hiérarchie est important :
| Concept | Description | Exemple |
|---|---|---|
| Stack | Un regroupement de projet ou de produit | "E-commerce Platform" |
| Application | Une unité déployable au sein d'un stack | "api", "frontend", "worker" |
| Service | Une instance de conteneur en cours d'exécution d'une application | "api-v3-abc123" (container) |
Un stack contient une ou plusieurs applications. Chaque application s'exécute en tant qu'un ou plusieurs services (conteneurs). Lorsque vous déployez une application, sh0 crée un nouveau service (conteneur) et supprime éventuellement l'ancien après la réussite du bilan de santé.
http://api:3000 sans configuration supplémentaire.Création d'un stack
Il existe deux façons de créer un stack :
Depuis le tableau de bord :
- Cliquez sur Nouveau stack dans le coin supérieur droit ou depuis la page des stacks.
- Saisissez un nom (minuscules, alphanumériques et tirets uniquement).
- Ajoutez une description facultative.
- Cliquez sur Créer le stack.
Via l'API :
curl -X POST http://localhost:9000/api/projects \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "my-stack", "description": "Production web app"}'Vue détaillée du stack
Cliquer sur un stack ouvre la vue détaillée, qui fournit une image complète de votre projet :
- Onglet Applications -- Toutes les applications de ce stack avec leur statut, utilisation des ressources et actions rapides (déployer, redémarrer, arrêter).
- Onglet Environnement -- Variables d'environnement au niveau du stack partagées entre toutes les applications.
- Onglet Domaines -- Tous les domaines attribués aux applications de ce stack.
- Onglet Sauvegardes -- Planifications et historique des sauvegardes pour les bases de données de ce stack.
- Onglet Paramètres -- Nom du stack, description, zone de danger (supprimer le stack).
Variables d'environnement du stack
Les variables d'environnement au niveau du stack sont héritées par toutes les applications du stack. C'est utile pour la configuration partagée comme les clés API, les URL de base de données ou les feature flags qui s'appliquent à l'ensemble du projet.
DATABASE_URL=postgres://user:pass@db:5432/myapp
REDIS_URL=redis://cache:6379
APP_ENV=production
STRIPE_API_KEY=sk_live_...APP_ENV=production et qu'une application définit APP_ENV=staging, l'application utilise staging. Cela vous permet de partager des valeurs par défaut tout en autorisant des remplacements par application.Paramètres du stack
L'onglet Paramètres vous permet de modifier les métadonnées du stack et d'effectuer des actions administratives :
- Nom et description -- Mettre à jour le nom d'affichage et la description du stack.
- Réseau Docker -- Afficher le nom du réseau Docker interne pour ce stack.
- Zone de danger -- Supprimer le stack et toutes ses applications, services et données. Cette action est irréversible.
Schémas courants
Voici quelques façons courantes d'organiser les stacks :
Par projet
Un stack par projet avec tous ses services.
saas-app (frontend + api + db + redis)Par environnement
Des stacks séparés pour le staging et la production.
myapp-staging / myapp-productionPar client
Les agences peuvent s'organiser par client.
client-acme / client-globexServices partagés
Infrastructure commune dans son propre stack.
infrastructure (traefik + monitoring + logging)Gestion des stacks via l'API
Toutes les opérations sur les stacks sont disponibles via l'API REST. Voici les principaux points de terminaison :
# List all stacks
curl http://localhost:9000/api/projects \
-H "Authorization: Bearer YOUR_TOKEN"
# Get a specific stack
curl http://localhost:9000/api/projects/STACK_ID \
-H "Authorization: Bearer YOUR_TOKEN"
# Update a stack
curl -X PUT http://localhost:9000/api/projects/STACK_ID \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "new-name", "description": "Updated description"}'
# Delete a stack
curl -X DELETE http://localhost:9000/api/projects/STACK_ID \
-H "Authorization: Bearer YOUR_TOKEN"