Chapitre Déploiement d'Applications Quarkus
Build a native image with GraalVM
- Comprendre les bases de la création d'une native image GraalVM
- Mesurer les temps d'exécution
Étapes suggérées
Installation des packages pour Linux
dnf (rpm-based)
sudo dnf install gcc glibc-devel zlib-devel libstdc++-static
Debian-based distributions
sudo apt-get install build-essential libz-dev zlib1g-dev
Cloner le dépôt GIT
git clone https://github.com/quarkusio/quarkus-quickstarts.git
Se positionner dans le répertoire getting-started
cd getting-started
Produire un exécutable natif
L'exécutable natif de notre application contiendra le code de l'application, les bibliothèques requises, les API Java et une version réduite d'une machine virtuelle. La base de machines virtuelles plus petite améliore le temps de démarrage de l'application et produit une empreinte disque minimale.
Création d'un exécutable natif
Vérifier la présence des instructions de compilation
Ouvrez le fichier pom.xml
et vérifiez la présence des lignes suivantes :
<profiles>
<profile>
<id>native</id>
<activation>
<property>
<name>native</name>
</property>
</activation>
<properties>
<skipITs>false</skipITs>
<quarkus.package.type>native</quarkus.package.type>
</properties>
</profile>
</profiles>
Vous pouvez fournir des options personnalisées pour la commande native-image en utilisant le
quarks.native.additional-build-args
. Plusieurs options peuvent être séparées par une virgule.
Une autre possibilité est d'inclure le quarkus.native.additional-build-args
dans votre application.propriétés.
Vous pouvez trouver plus d'informations sur la configuration du processus de création d'image native plus loin dans l'exercice.
Nous utilisons un profil car, vous le verrez très bientôt, empaqueter l'exécutable natif prend quelques minutes. Tu pourrais juste passer
-Dquarkus.package.type=native
en tant que propriété sur la ligne de commande, mais il est préférable d'utiliser un profil car cela permet également d'exécuter des tests d'image natifs.
Construire l'exécutable natif
Créer un exécutable natif à l'aide de la CLI Quarkus
quarkus build --native
En utilisant Maven
:
./mvnw install -Dnative
Vous devriez voir les lignes suivantes à un moment :
[INFO] [io.quarkus.deployment.pkg.steps.JarResultBuildStep] Building native image source jar: /home/sleroy/quarkus-quickstarts/getting-started/target/getting-started-1.0.0-SNAPSHOT-native-image-source-jar/getting-started-1.0.0-SNAPSHOT-runner.jar
[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildStep] Building native image from /home/sleroy/quarkus-quickstarts/getting-started/target/getting-started-1.0.0-SNAPSHOT-native-image-source-jar/getting-started-1.0.0-SNAPSHOT-runner.jar
[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildContainerRunner] Using docker to run the native image builder
[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildContainerRunner] Pulling builder image 'quay.io/quarkus/ubi-quarkus-mandrel-builder-image:jdk-21'
Compilation d'un binaire statique
Il faut rajouter le paramètre suivant pour construire sous linux un binaire statique :
-Dquarkus.native.additional-build-args="--static","--libc=musl".
Vérification du binaire
Produire un exécutable natif peut entraîner quelques problèmes, et c'est donc aussi une bonne idée d'exécuter des tests sur l'application exécutée dans le fichier natif.
Pour voir la ressource GreetingResource qu'ELLE s'exécute par rapport à l'exécutable natif, utilisez ./mvnw verify -Dnative
.
Contenu original
- https://quarkus.io/guides/building-native-image