Par défaut, la fonctionnalité de gestion des applications utilise les Heroku Cloud Native Buildpacks (CNB) version heroku/builder:24 pour générer les applications. Cette rubrique décrit comment configurer des applications en Java, Python, Go, Node.js , y compris les fichiers requis, l'épinglage des versions d'exécution et l'utilisation du Procfile.
Remarques sur la configuration des images et des conteneurs
-
Configurez les variables d'environnement lors de la génération d'une image de conteneur
Ajoutez un fichier
project.tomlpour spécifier les variables d'environnement au moment de la génération, telles queMAVEN_OPTS.RemarquePour plus d'informations sur le fichier
project.toml, consultez la section Présentation du fichier project.toml de cette rubrique. -
Configurez les variables d'environnement pour transmettre les paramètres d'exécution du conteneur
Les paramètres d'exécution du conteneur sont transmis aux applications via des variables d'environnement. Assurez-vous que votre code lit les paramètres à partir des variables d'environnement. Lorsque vous déployez un conteneur, spécifiez les variables d'environnement correspondantes. La gestion des applications stocke ces variables dans le fichier
envet les transmet au processus du conteneur à l'aide de l'option--env-file.
Configurations des applications
La fonctionnalité de gestion des applications peut déployer directement des dépôts de code dans les langages de programmation suivants. Chaque section ci-dessous décrit les fichiers requis et les options de configuration pour ce langage.
Java
Prérequis pour les applications
Les applications Java doivent répondre aux exigences suivantes :
Le répertoire racine du dépôt de code doit contenir un fichier
pom.xml.Générez l'application avec Maven ou Gradle.
La version du JDK de l'application doit être prise en charge.
Notes de configuration
-
Versions OpenJDK
Les versions majeures 8, 11, 17, 21 et 22 d'OpenJDK sont prises en charge. Les CNB installent la dernière version mineure de la version majeure spécifiée.
RemarqueSpécifiez la version majeure d'OpenJDK pour votre application. Si vous omettez cette étape, les CNB installeront la version par défaut actuelle à support à long terme (LTS), qui évolue au fil du temps et peut entraîner des échecs de génération lors de sa mise à jour.
Pour épingler une version, ajoutez le
system.propertiesfichier de propriétés Java au répertoire racine de l'application. L'exemple suivant épingle l'application sur OpenJDK 21 :java.runtime.version=21 -
Options Maven
Utilisez la variable d'environnement
MAVEN_OPTSpour appliquer les paramètres Maven. Ajoutez un fichierproject.tomlau répertoire racine pour définir cette variable.Les CNB prennent en charge Maven 3.9 par défaut. Si votre application requiert une version différente de Maven, utilisez plutôt le Maven Wrapper (mvnw). Les CNB détectent et utilisent le fichier
mvnwprésent dans la racine du projet.Exécutez la commande suivante pour configurer le Maven Wrapper :
mvn wrapper:wrapper # Generate the .mvn directory, the mvnw, and the mvnw.cmd file. git add .mvn mvnw mvnw.cmd git commit -m "support maven wrapper" git push origin # Submit the branch to the code repository. -
Procfile
Un fichier
Procfiledéclare le type de processus et la commande de démarrage d'une application. Pour plus d'informations sur la syntaxe du Procfile et les types de processus, consultez la section Présentation des fichiers Procfile de cette rubrique. Pour les applications Spring Boot, un fichierProcfileremplace le processus de démarrage par défaut. L'exemple suivant montre un fichierProcfiletypique pour Spring Boot :web: java -Dserver.port=$PORT $JAVA_OPTS -jar target/demo-0.0.1-SNAPSHOT.jar
Exemples de projets
GitHub : github-java-springboot-demo
Gitee : gitee-java-springboot-demo
Pour plus d'informations, consultez buildpacks-jvm.
Python
Prérequis pour les applications
Le répertoire racine du dépôt de code source doit contenir un fichier requirements.txt ou poetry.lock.
Notes de configuration
-
Versions Python
Les CNB installent la dernière version de Python (actuellement la 3.13) par défaut. Pour utiliser une version différente, ajoutez un fichier
.python-versionau répertoire racine et spécifiez la version cible :$ cat .python-version 3.13 -
Procfile
Un fichier
Procfileest un fichier texte brut situé dans le répertoire racine qui déclare le type de processus et la commande de démarrage. L'exemple suivant montre un Procfile pour une application Python utilisant Gunicorn :web: gunicorn --config gunicorn.conf.py gettingstarted.wsgiRemarqueUn Procfile n'est pas obligatoire pour les applications simples, mais il est recommandé d'en ajouter un aux applications Python pour rendre la commande de démarrage explicite et éviter de s'appuyer sur la détection automatique. Pour plus d'informations, consultez la section Présentation des fichiers Procfile.
Exemples de projets
GitHub : github-python-falcon-demo
Gitee : gitee-python-falcon-demo
Pour plus d'informations, consultez buildpacks-python.
Go
Prérequis pour les applications
Les applications Go doivent répondre aux exigences suivantes :
Le répertoire racine du dépôt de code doit contenir un fichier
go.mod. Lemodule namedans le fichiergo.moddoit contenir au moins une barre oblique (/).-
Go 1.16 ou une version ultérieure est requis pour la compilation. Les modules Go doivent être utilisés pour la gestion des dépendances.
RemarqueLes CNB ne prennent en charge que les modules Go pour la gestion des dépendances. Les gestionnaires de dépendances tiers tels que dep, godep, govendor et glide ne sont pas pris en charge.
Notes de configuration
-
Versions Go
Les CNB lisent la version de Go à partir de la directive
godans le fichiergo.mod. Un identifiant de version majeure tel quego 1.17résout vers la dernière version de correctif disponible dans cette série au moment de la génération. Pour épingler une version de correctif spécifique, spécifiez la version complète (par exemple,go 1.17.13).L'entrée suivante sélectionne la dernière version Go 1.17.x disponible au moment de la génération :
go 1.17 -
Gestion des dépendances
Si le répertoire racine contient un fichier
vendor/modules.txt, les CNB utilisent les modules Go du répertoirevendorau lieu de les télécharger.Si aucun fichier
vendor/modules.txtn'est présent, les CNB téléchargent les modules Go avant la compilation.
-
Installation des packages
Les CNB génèrent tous les packages
maindétectés dans le projet.
Exemples de projets
GitHub : github-go-web-demo
Gitee : gitee-go-web-demo
Pour plus d'informations, consultez buildpacks-go.
Node.js
Prérequis pour les applications
Les applications Node.js doivent répondre aux exigences suivantes :
Un fichier
package.jsonvalide doit être présent dans le répertoire racine pour que les CNB détectent l'application.Un fichier de verrouillage npm, yarn ou pnpm valide doit être présent pour installer les dépendances.
Notes de configuration
Versions Node.js
Définissez le champ engines.node dans le fichier package.json pour épingler la version de Node.js. Si aucune version n'est spécifiée, les CNB installent la dernière version LTS, qui évolue au fil du temps et peut entraîner un comportement de génération inattendu.
L'exemple suivant épingle l'application sur la dernière version Node.js 20.x :
{
"engines": {
"node": "20.x"
}
}
Le champ engines.node prend en charge la même syntaxe de version sémantique que le fichier package.json. Épinglez la version de Node.js pour éviter les modifications inattendues lorsque la version LTS par défaut est mise à jour.
Exemples de projets
GitHub : github-nodejs-express-demo
Gitee : gitee-nodejs-express-demo
Pour plus d'informations, consultez buildpacks-nodejs.
PHP
Prérequis pour les applications
Les applications PHP doivent répondre aux exigences suivantes :
Les versions PHP 8.2, 8.3 et 8.4 sont prises en charge.
Le répertoire racine du dépôt d'application doit contenir à la fois les fichiers
composer.jsonetcomposer.lock.
Notes de configuration
PHP
Spécifiez la version d'exécution PHP dans le fichier composer.json. L'exemple suivant requiert PHP 8.2.0 ou une version ultérieure :
{
"require": {
"php": "^8.2.0"
}
}
Exemples de projets
GitHub : github-php-demo
Gitee : gitee-php-demo
Pour plus d'informations, consultez buildpacks-php et php-support.
Ruby
Prérequis pour les applications
Le répertoire racine du dépôt de code doit contenir des fichiers Gemfile et Gemfile.lock valides.
Notes de configuration
-
Versions Ruby
Spécifiez la version de Ruby dans le fichier
Gemfileet mettez à jour le fichierGemfile.locken conséquence :-
Spécifiez la version de Ruby dans le fichier
Gemfile:ruby "3.3.0" -
Mettez à jour le fichier
Gemfile.lock:$ bundle update --ruby -
Vérifiez la version de Ruby dans le fichier
Gemfile.lock:RUBY VERSION ruby 3.3.0p0Si aucune version de Ruby n'est trouvée dans le fichier
Gemfile.lock, les Buildpacks installent la version Ruby par défaut. Spécifiez une version pour éviter les modifications inattendues lorsque la version par défaut est mise à jour.
-
-
Versions Bundler
Spécifiez la version de Bundler dans le fichier
Gemfile.lockpour verrouiller Bundler sur une version stable connue. Exemple :BUNDLED WITH 2.5.6Si aucune version de Bundler n'est trouvée dans le fichier
Gemfile.lock, les Buildpacks installent la version Bundler par défaut. Spécifiez une version pour éviter les modifications inattendues lorsque la version par défaut est mise à jour.
Exemples de projets
GitHub :
Gitee :
Pour plus d'informations, consultez buildpacks-ruby et application-contract.md.