DéveloppeursDémarrage rapide
Démarrage rapide : déployer depuis GitHub
Ce guide déploie une app depuis un dépôt GitHub public avec de simples appels HTTP. Il vous faut :
- un serveur d’applications, acheté dans la console sous Serveurs et facturation ;
- un jeton d’API avec Lecture, Écriture, Déploiement et Lecture des données sensibles ;
curletjq.
Les exemples utilisent une app Node qui écoute sur le port 3000. Remplacez-les par votre propre dépôt et votre port.
1. Préparer votre shell#
export HOSTWOLF_APPS_TOKEN='12|your_token'
export API=https://console.app.hostwolf.net/api/v1
hw() { curl -sS --fail-with-body -H "Authorization: Bearer $HOSTWOLF_APPS_TOKEN" -H "Accept: application/json" -H "Content-Type: application/json" "$@"; }
hw $API/team | jq '{id, name}'
hw est une petite fonction d’aide pour garder les commandes ci-dessous courtes ; --fail-with-body s’arrête en cas d’erreur et affiche le message de l’API. Si cette commande affiche votre équipe, le jeton fonctionne.
2. Choisir un serveur#
hw $API/hostwolf/servers | jq '.[] | {name, city, size, status, server_uuid}'
export SERVER=$(hw $API/hostwolf/servers | jq -r '[.[] | select(.kind == "app" and .status == "ready")][0].server_uuid')
server_uuid est ce dont la création d’app a besoin. Les entrées VPS n’en ont pas : les apps tournent sur des serveurs d’applications.
3. Créer un projet#
export PROJECT=$(hw -X POST $API/projects -d '{"name": "hello"}' | jq -r .uuid)
Un nouveau projet est livré avec un environnement production.
4. Créer l’application#
export APP=$(hw -X POST $API/applications/public -d "{
\"project_uuid\": \"$PROJECT\",
\"environment_name\": \"production\",
\"server_uuid\": \"$SERVER\",
\"git_repository\": \"https://github.com/you/your-app\",
\"git_branch\": \"main\",
\"build_pack\": \"nixpacks\",
\"ports_exposes\": \"3000\"
}" | jq -r .uuid)
build_pack:nixpacksourailpackdétectent le langage et font le build pour vous ;dockerfileutilise le Dockerfile du dépôt ;staticsert des fichiers.- Omettez
domainspour obtenir une adresse HTTPS générée sous le nom de votre serveur. Pour utiliser la vôtre, passez"domains": "https://shop.example.com"et faites pointer un enregistrement DNS vers l’IP du serveur. - Pour un dépôt privé, utilisez plutôt
/applications/private-deploy-keyou/applications/private-github-app; voir la référence de l’API.
5. Définir les variables d’environnement#
hw -X PATCH $API/applications/$APP/envs/bulk -d '{"data": [
{"key": "NODE_ENV", "value": "production"},
{"key": "SESSION_SECRET", "value": "change-me", "is_shown_once": true}
]}' | jq 'map(.key)'
is_shown_once masque définitivement une valeur une fois enregistrée.
6. Déployer et attendre#
DEPLOYMENT=$(hw -X POST $API/applications/$APP/start | jq -r .deployment_uuid)
while :; do
STATUS=$(hw $API/deployments/$DEPLOYMENT | jq -r .status)
echo "$STATUS"
case $STATUS in finished|failed|cancelled*) break ;; esac
sleep 5
done
Un premier build prend généralement une à trois minutes. S’il échoue, le journal de build indique pourquoi :
hw $API/deployments/$DEPLOYMENT | jq -r '.logs | fromjson | map(select(.hidden | not) | .output) | .[-30:][]'
7. Ouvrir l’app et lire les journaux#
hw $API/applications/$APP | jq -r .fqdn
hw "$API/applications/$APP/logs?lines=50" | jq -r .logs
fqdn liste les adresses de l’app, séparées par des virgules. Les journaux nécessitent la permission Lecture des données sensibles.
8. Faire le ménage#
hw -X DELETE $API/applications/$APP
hw -X DELETE $API/projects/$PROJECT
Supprimer une app supprime aussi ses volumes, sauf si vous passez ?delete_volumes=false. Un projet ne peut être supprimé qu’une fois vide ; attendez donc quelques secondes après la suppression de l’app.
Étapes suivantes#
- Déployez à chaque
git push: déploiements par push. - Ajouter une base de données : bases de données managées.
- Absorber plus de trafic : multi-serveur et mise à l’échelle automatique.
- Le même parcours en TypeScript se trouve dans le démarrage rapide du SDK.