Cette page couvre les usages avancés de Vidocq Runtime au-delà du Hello world : packaging via le vidocq-runtime-maven-plugin (jlink, jpackage, Docker), configuration via https://microprofile.io/specifications/microprofile-config/, observabilité (https://microprofile.io/specifications/microprofile-health/, https://microprofile.io/specifications/microprofile-metrics/, https://microprofile.io/specifications/microprofile-open-api/), profils, et préparation AOT.
Packaging avec vidocq-runtime-maven-plugin
Le plugin Maven expose trois cibles de packaging. Voir la fiche dédiée pour l’inventaire complet et le détail JLINK.md interne au repo.
| Goal | Sortie | Démarrage typique |
|---|---|---|
|
|
~4 s |
|
|
~1 s (CDS) |
|
|
~50 Mo image |
Quick start (depuis vidocq-runtime-cassini-rest-example) :
cd vidocq-runtime-examples/vidocq-runtime-cassini-rest-example
./mvnw -ntp package -DskipTests
./target/dist/bin/todo-app
Configuration MicroProfile
Vidocq Runtime implémente https://microprofile.io/specifications/microprofile-config/. Hiérarchie des sources, du plus prioritaire au moins prioritaire :
| Ordinal | Source | Description |
|---|---|---|
400 |
|
|
300 |
|
Variables d’environnement ( |
250 |
|
|
100 |
|
|
ExternalFileConfigSource permet de surcharger un binaire jlink/jpackage déployé sans rebuilder, simplement en éditant le fichier conf/vidocq.properties à côté du launcher. Une ligne de log au boot trace le chargement effectif.
Health
@Liveness
@ApplicationScoped
public class DatabaseHealth implements HealthCheck {
@Inject DataSource ds;
@Override
public HealthCheckResponse call() {
try (Connection c = ds.getConnection()) {
return HealthCheckResponse.up("database");
} catch (SQLException e) {
return HealthCheckResponse.down("database");
}
}
}
Endpoints exposés : /q/health, /q/health/live, /q/health/ready, /q/health/started (jalon en cours, voir TCK).
Metrics
Implémentation https://microprofile.io/specifications/microprofile-metrics/ en cours. Les compteurs et histogrammes seront enregistrés au build time par l’extension vidocq-runtime-metrics-extension. Endpoint Prometheus /q/metrics.
OpenAPI
L’extension vidocq-runtime-openapi-extension (jalon courant) génère le document OpenAPI à la compilation à partir des annotations Jakarta REST + MicroProfile OpenAPI. Endpoint /q/openapi.
Profils
Convention MicroProfile : préfixer une clé par %<profil>. pour la scoper.
vidocq.http.port=8080
%dev.vidocq.http.port=8081
%prod.vidocq.http.port=80
Activation via -Dvidocq.profile=dev ou la variable VIDOCQ_PROFILE.
Déploiement Docker
Image distroless minimale produite par vidocq:docker :
./mvnw -ntp package -Dvidocq.docker.build=true
docker run --rm -p 8080:8080 \
-e VIDOCQ_CONFIG_DIR=/etc/myapp \
-v $(pwd)/conf:/etc/myapp:ro \
example/my-app:1.0.0
Le base image distroless/base-debian12:nonroot n’a ni shell ni package manager — surface d’attaque réduite. L’utilisateur nonroot (UID 65532) est imposé.
AOT — GraalVM et Leyden
-
Leyden CDS — supporté de série. La génération statique Class-File API produit un bytecode parfaitement archivable.
-
GraalVM native-image — la stratégie zéro-réflexion + zéro-proxy de Vidocq Runtime minimise les
reachability-metadata. Voirvidocq/JLINK.mdpour les pré-requis runtime (logging.properties, JPMS nommés, records sérialisés).
Pour aller plus loin
-
Référence — clés de config exhaustives, propriétés du plugin
-
Fonctionnement interne — séquence de boot
-
Plugin Maven — détail des goals