Votre premier déploiement
Mettre votre propre code en ligne depuis un répertoire de votre poste, sans dépôt Git. Chaque commande ci-dessous a été exécutée sur un serveur sh0, avec sa sortie réelle.
Vue d'ensemble
sh0 déploie une application depuis quatre sources. Ce guide suit la première, qui convient à la plupart des projets :
- Un répertoire de votre poste, envoyé par
sh0 pushsous forme d'archive -- votre code, avec un Dockerfile ou une pile détectée (Node.js, Python, Go, Rust, PHP…). - Une archive ZIP envoyée depuis le tableau de bord.
- Un dépôt Git, public ou privé, cloné par le serveur.
- Un gabarit du catalogue (bases de données, CMS, outils).
Étape 1 : préparer le répertoire
Un Dockerfile à la racine vous donne la maîtrise complète de l'image. Sans lui, sh0 détecte la pile d'après les fichiers du projet. L'application doit écouter sur un port, ici 3000 :
FROM node:20-alpine
WORKDIR /app
COPY server.js .
EXPOSE 3000
CMD ["node","server.js"]sh0 check note le répertoire avant tout envoi et signale ce qu'il faut corriger. sh0 push fait la même vérification et s'arrête sur un problème bloquant (sauf --no-check) ; les avertissements ne l'arrêtent pas :
$ sh0 check .
Scanning /home/you/my-api
Detected: Dockerfile
Health Score: 95/100
Complexity: 2 (Simple)
[~] Warnings (1):
- Missing .dockerignore
Fix: Create a .dockerignore file with: node_modules, .git, dist, .env
1 issue(s): 0 blocking, 1 warnings, 0 auto-fix, 0 infoÉtape 2 : connecter la CLI
Installez la CLI sur votre poste (voir Installation de la CLI), puis lancez sh0 login --url https://panel.example.com avec l'adresse de votre panneau. Elle demande votre adresse e-mail et votre mot de passe (et votre code 2FA s'il est activé), puis enregistre une clé d'API dans ~/.sh0/config.toml.
Vérifiez la connexion :
$ sh0 whoami
Server: https://panel.example.com
User: [email protected]
Role: ownerÉtape 3 : envoyer
Depuis le répertoire du projet :
$ sh0 push -n my-api --port 3000
Deploying my-api
Detected dockerfile -- 95/100 health
2 files (0.0 MB) packaged
Uploading OK 5ms
Routing OK 10.0s
[ok] Live in 10.0s
-> https://my-api-<instance>.sh0.app-nnomme l'application ; sans lui, c'est le nom du répertoire. Le même nom met ensuite à jour la même application.--portest le port sur lequel votre application écoute dans le conteneur.- Une archive est limitée à 500 Mo. Ajoutez un
.dockerignorepour exclurenode_modules,.gitet les fichiers de build ; voir Déployer par push pour les autres limites.
Étape 4 : vérifier
La dernière ligne de sh0 push est l'adresse de l'application. Sur un serveur relié au proxy cloud de sh0, c'est un sous-domaine *.sh0.app en HTTPS ; pour votre propre domaine, voir l'étape 6.
$ sh0 status my-api
App: my-api
------------------------------
ID: 85aab295-4166-470a-9538-807b46e8bec3
Status: running
...
Latest Deployment
------------------------------
ID: 551c1602-5a46-49eb-93df-70ee831cfea3
Status: running
Duration: 37.9s
When: 39s ago
$ curl -s https://my-api-<instance>.sh0.app/
{"db":true,"version":2,"greeting":"salut"}Si l'application ne répond pas, lisez ses journaux avec sh0 logs my-api --tail 100, ou ouvrez l'application dans le tableau de bord et consultez le journal de build du déploiement.
Étape 5 : mettre à jour
Modifiez votre code et relancez le même sh0 push -n my-api --port 3000 : sh0 construit une nouvelle image et remplace le conteneur en service une fois le nouveau prêt. La mise à jour ci-dessus a pris 38 secondes, et l'application a répondu avec sa nouvelle version.
Étape 6 : votre propre domaine
Faites pointer un enregistrement A de votre domaine vers l'adresse IP du serveur, puis ajoutez-le à l'application, depuis l'onglet Domaines de l'application ou avec sh0 domains my-api add api.example.com. sh0 demande le certificat TLS à Let's Encrypt. Détails dans Domaines personnalisés.
Depuis le tableau de bord
Ouvrez Déployer dans la barre latérale et choisissez une source :
- Téléverser un fichier -- une archive ZIP de votre projet.
- URL Git ou GitHub -- un dépôt et une branche.
- Modèle -- une application du catalogue.
Prochaines étapes
Votre application est en ligne. Pour la suite :
En savoir plus sur les stacks
Comprenez comment organiser plusieurs applications et services.
Variables d'environnement
Ajoutez de la configuration et des secrets à votre application.
Domaines et SSL
Configurez des domaines personnalisés et comprenez l'automatisation SSL.
Ajouter une base de données
Créer un serveur PostgreSQL, MySQL, MariaDB ou Redis et y connecter votre application.