Buildpacks
Commitez votre code. Nodion détecte le langage, installe un runtime et construit une image.
Dans Applications → New, connectez un dépôt Gitet choisissez Buildpacks. Nodion utilise le builder par défaut, sauf si vous en choisissez un autre. Dans un monorepo, faites pointer Base directory vers le dossier de l'app.
Utilisez plutôt un Dockerfilesi vous en avez déjà un, ou si le dépôt ne correspond pas à un langage pris en charge.
De quoi s'agit-il ?
Les Nodion Buildpacks sont des Cloud Native Buildpacks. Les phases de détection, de build et de lancement suivent cette spécification. Les buildpacks de langage, la stack Ubuntu et les versions de runtime sont propres à Nodion. Ce ne sont pas des buildpacks Paketo, Heroku ou Google.
La stack actuelle est nodion-26 : Ubuntu 26.04 LTS. L'image de build contient des compilateurs et des fichiers d'en-tête. L'image d'exécution (run image) contient les bibliothèques client courantes (Postgres, MySQL, ImageMagick, certificats CA, etc.). Le processus s'exécute sous un utilisateur non root. Déclarez les paquets système supplémentaires dans un Aptfile ou dans project.toml.
Ce que fait un build
- Examine les fichiers du répertoire de base et choisit le premier groupe de langage correspondant.
- Détermine le runtime à partir de la version que vous avez fixée (ou de la version par défaut), puis l'installe.
- Installe les dépendances à partir du fichier de verrouillage (lockfile) ou du manifeste.
- Exécute le build propre au langage (assets,
mix release,go build, etc.). - Définit un processus
webpar défaut. Un Procfile le remplace.
Votre app doit écouter sur PORT ; Nodion définit cette variable. La plupart des commandes par défaut utilisent 8080 si elle n'est pas définie.
Détection
Les groupes sont testés de haut en bas. Le premier groupe dont tous les fichiers requis sont présents l'emporte. Les paquets Debian supplémentaires sont facultatifs dans chaque groupe.
| Si l'arborescence contient | Nodion utilise |
|---|---|
package.json et un frontend statique | Node.js, puis static |
composer.json et package.json | PHP et Node (Laravel avec Vite, par exemple) |
Gemfile et package.json | Ruby et Node (Rails avec JS) |
composer.json | PHP |
Gemfile | Ruby |
requirements.txt, Pipfile ou pyproject.toml | Python |
go.mod | Go |
Cargo.toml | Rust |
mix.exs | Elixir |
pom.xml ou fichiers Gradle | Java |
*.csproj, *.fsproj ou *.sln | .NET |
package.json seul (une app serveur) | Node.js |
static.toml et pas de package.json | Site statique |
Procfile seul | Vos types de processus, sans installation de langage |
L'analyse du dashboard affiche un avertissement lorsqu'elle ne trouve aucun marqueur pris en charge. Vous pouvez tout de même choisir Buildpacks, passer à un Dockerfile ou définir un autre répertoire de base.
Versions prises en charge
Nodion conserve une branche de langage jusqu'à sa fin de vie, puis pendant trois mois au maximum. Si vous demandez une version mineure, vous obtenez son dernier correctif publié. Une version antérieure à la plus ancienne branche publiée fait échouer le build (fin de vie). Une version plus récente que toutes les versions déjà construites fait également échouer le build (pas encore disponible).
Go et Rust font exception : la toolchain publiée la plus récente construit l'app, même si go.mod ou rust-version indique une version plus ancienne.
Les branches ci-dessous étaient disponibles en septembre 2026. Les correctifs évoluent au fil de nos publications. Si vous avez besoin d'une version mineure précise, fixez-la dans le fichier indiqué sur la page du langage.
| Langage | Par défaut | Branches publiées |
|---|---|---|
| Node.js | 24 | 22, 24, 25, 26 |
| Python | 3.13 | 3.10-3.14 |
| PHP | 8.3 | 8.2-8.5 |
| Ruby | 3.4 | 3.3, 3.4, 4.0 |
| Go | 1.26 | Toolchain la plus récente (actuellement 1.25-1.27) |
| Rust | 1.96 | Toolchain la plus récente (actuellement 1.95-1.98) |
| Java | 21 | 11, 17, 21, 25, 26 |
| .NET | 10 | 8, 9, 10 |
| Elixir | 1.20 | 1.15-1.20 (Erlang/OTP 26-29, 28 par défaut) |
Procfile
Un Procfile dans le répertoire de base définit les types de processus. web est le processus par défaut s'il existe, sinon c'est la première ligne. Les valeurs par défaut du langage ne s'appliquent qu'en l'absence de Procfile.
web: gunicorn myapp.wsgi --bind 0.0.0.0:$PORT
worker: python worker.py Chaque type devient un processus distinct de l'app. Réglez le nombre de réplicas et la commande dans l'onglet Processes.
Paquets Debian supplémentaires
Privilégiez project.toml. Un Aptfile (un paquet ou une URL .deb par ligne) fonctionne toujours. Si les deux existent, project.toml l'emporte.
[com.nodion.buildpacks.deb-packages]
install = ["ffmpeg", "pandoc"]
Les paquets sont extraits dans l'image. Leurs scripts de maintenance (maintainer scripts) ne s'exécutent pas ; les paquets qui créent des utilisateurs système ou démarrent des services ne fonctionneront donc pas. Un paquet pointé par une URL directe https://…/*.deb est téléchargé tel quel, sans résolution des dépendances.