Buildpacks et auto-détection

Comment la plateforme construit votre image à partir de votre code. Langages supportés, versions, override.

La plateforme construit votre image OCI à partir de votre code source via les Cloud Native Buildpacks. Pour les apps standard (Python/Django, Node, Ruby, Go), la détection automatique fonctionne sans Dockerfile. Pour les apps avec dépendances système particulières ou stack moins courante, ajoutez un Dockerfile à la racine — la plateforme l'utilisera en priorité sur le buildpack auto-détecté.

Détection automatique

Selon les fichiers présents à la racine du repo, le buildpack approprié est sélectionné.

Fichier détectéBuildpack appliqué
requirements.txt, Pipfile, pyproject.tomlPython
package.jsonNode.js
GemfileRuby
composer.jsonPHP
go.modGo
Cargo.tomlRust
pom.xml, build.gradleJava
mix.exsElixir
*.csproj, *.fsproj.NET
DockerfileBuild OCI direct (sans buildpack)

Langages supportés et versions

LangageVersions supportéesVersions LTS recommandées
Python3.10 → 3.133.12
Node.js18 → 2220 LTS, 22 LTS
Ruby3.1 → 3.33.3
PHP8.1 → 8.48.3
Go1.21 → 1.231.23
Ruststable, 1.75+stable
Java11, 17, 2121 LTS
Elixir1.15+1.16, 1.17
.NET6, 88 LTS

Pour fixer une version précise, ajoutez un fichier .python-version, .nvmrc, .ruby-version, .go-version, etc., ou la déclarez dans votre fichier de configuration habituel (package.json engines, Pipfile python_version, etc.).

Override du buildpack

Si la détection automatique ne convient pas, forcez un buildpack précis dans paas.toml :

[build]
buildpack = "paketo/python"

Cloud Native Buildpacks

Nous utilisons les Cloud Native Buildpacks (CNB), un standard ouvert maintenu par la CNCF. Cela vous donne :

  • Reproductibilité : mêmes inputs, même image, partout
  • Cache de couches intelligent, partagé entre les builds
  • Sécurité : SBOM (Software Bill of Materials) généré automatiquement, signé
  • Portabilité : si vous voulez partir, vos buildpacks fonctionnent ailleurs (CircleCI, GitHub Actions, autres PaaS)

Dockerfile

Si vous avez un Dockerfile, nous l'utilisons à la place du buildpack. C'est utile pour les cas où vous avez besoin d'un contrôle total : binaires natifs, dépendances système exotiques, runtime non standard.

Le Dockerfile reste votre dernier recours, pas le défaut. Les buildpacks sont plus rapides à builder, plus sécurisés à maintenir, et nous savons les faire évoluer pour vous (mise à jour OS, patches sécurité). Avec un Dockerfile, vous reprenez la responsabilité.