{"id":2089,"date":"2025-12-30T14:17:49","date_gmt":"2025-12-30T13:17:49","guid":{"rendered":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/?p=2089"},"modified":"2025-12-30T14:24:40","modified_gmt":"2025-12-30T13:24:40","slug":"deploy-a-quarkus-application-in-cloud-run","status":"publish","type":"post","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/deployer-une-application-quarkus-dans-cloud-run\/","title":{"rendered":"D\u00e9ployer une application Quarkus dans Cloud Run"},"content":{"rendered":"<p>Quarkus est un framework de d\u00e9veloppement de microservice pens\u00e9 pour le cloud et les conteneurs.<\/p>\n<p>Il est pens\u00e9 pour avoir une utilisation m\u00e9moire r\u00e9duite et un temps de d\u00e9marrage le plus court possible.<\/p>\n<p>Il se base principalement sur des standards (Jakarta EE, Eclipse MicroProfile, \u2026) et permet l\u2019utilisation de librairies Java matures et tr\u00e8s r\u00e9pandues via ses extensions (Hibernate, RESTeasy, Vert.X, Kafka, \u2026).<\/p>\n<p>Quarkus a \u00e9t\u00e9 pens\u00e9 pour le cloud d\u00e8s sa conception, il permet le d\u00e9veloppement d\u2019applications Cloud Ready (tel que d\u00e9fini par le principe des applications 12 Factors ) et Cloud Native (utilisation les capacit\u00e9s des clouds publics pour d\u00e9velopper vos applications).<\/p>\n<p>Google Cloud Run est une solution de Container As A Service qui permet d&rsquo;ex\u00e9cuter des services d&rsquo;interface et de backend, des jobs par lot, des LLM h\u00f4tes et des charges de travail de traitement de file d&rsquo;attente sans avoir \u00e0 g\u00e9rer l&rsquo;infrastructure.<\/p>\n<p>Quarkus est donc une bonne solution pour d\u00e9velopper une application \u00e0 d\u00e9ployer dans Cloud Run.<\/p>\n<h2>Cr\u00e9er une application Quarkus<\/h2>\n<p>Premi\u00e8re \u00e9tape, cr\u00e9er une application Quarkus:<\/p>\n<pre>\nquarkus create app quarkus-cloud-run\n<\/pre>\n<p>Le projet sera g\u00e9n\u00e9r\u00e9 dans un r\u00e9pertoire <code>quarkus-cloud-run<\/code>, d\u00e9placez-vous \u00e0 la racine de celui-ci puis lancer l&rsquo;application via <code>quarkus dev<\/code>.<\/p>\n<p>Vous pouvez tester l&rsquo;application via <code>curl localhost:8080\/hello<\/code>.<\/p>\n<p>Une application Quarkus peut fonctionner dans une JVM ou comme une application native, nous allons ici choisir un d\u00e9ploiment en image native qui est plus adapt\u00e9 aux d\u00e9ploiements cloud.<\/p>\n<p>Pour builder l&rsquo;application en image native, vous pouvez utiliser la commande suivante :<\/p>\n<pre>\ncp src\/main\/docker\/Dockerfile.native Dockerfile\nquarkus build --native\n<\/pre>\n<h2>D\u00e9ployer dans Google Cloud Run<\/h2>\n<p>Par d\u00e9faut, <code>gcloud<\/code> va envoyer tous les fichiers de votre application sauf ceux d\u00e9finis dans votre <code>.gitignore<\/code> pour packager votre application, vous pouvez ajouter dans un fichier  <code>.gcloudignore<\/code> des r\u00e9pertoires ou fichier \u00e0 ignorer, par exemple le r\u00e9pertoire de l&rsquo;application : <code>src\/<\/code>.<\/p>\n<p>Pour cr\u00e9er un conteneur, nous allons utiliser le Dockerfile fournit par Quakus dans <code>src\/main\/docker\/Dockerfile.native<\/code>, il suffit de le copier \u00e0 la racine pour qu&rsquo;il soit utilis\u00e9 par d\u00e9faut :<\/p>\n<pre>\ncp src\/main\/docker\/Dockerfile.native Dockerfile\n<\/pre>\n<p><strong>Attention<\/strong> : ce Dockerfile contient une directive qui  n&rsquo;est pas compatible avec Cloud Build, il faut en modifier la directive <code>COPY<\/code> pour en retirer les options <code>--chown<\/code> et <code>chmod<\/code> :<\/p>\n<pre>\nCOPY target\/*-runner \/work\/application\n<\/pre>\n<p>Cloud Build peut packager votre application et la mettre \u00e0 disposition de Cloud Run dans la container registry de Google Cloud. Vous pouvez utiliser la commande suivante qui va utiliser par d\u00e9faut le <code>Dockerfile<\/code> situ\u00e9 \u00e0 la racine de votre application :<\/p>\n<pre>\ngcloud builds submit --tag gcr.io\/PROJECT-ID\/quarkus-cloud-run\n<\/pre>\n<p>Une fois le build termin\u00e9, vous pouvez lancer votre application via Cloud Run gr\u00e2ce \u00e0 la commande suivante qui va utiliser pour cela le conteneur pr\u00e9c\u00e9demment cr\u00e9er par Cloud Build:<\/p>\n<pre>\ngcloud run deploy --image gcr.io\/PROJECT-ID\/quarkus-cloud-run\n<\/pre>\n<p>Une fois l&rsquo;application d\u00e9ploy\u00e9e, <code>gcloud<\/code> va afficher dans ses logs le <strong>Service URL<\/strong> qui nous permet d&rsquo;acc\u00e9der \u00e0 l&rsquo;application.<\/p>\n<p>Vous pouvez tester l&rsquo;application via <code>curl SERVICE_URL\/hello<\/code>.<\/p>\n<h2>Ajouter un Health Check<\/h2>\n<p>Cloud Run supporte l&rsquo;utilisation de Health Check sous forme de startup probe, liveness probe et readiness probe.<\/p>\n<p>Quarkus supporte les Health Check via l&rsquo;extension SmallRye Health, vous pouvez l&rsquo;ajouter \u00e0 votre application via :<\/p>\n<pre>\nquarkus extension add smallrye-health\n<\/pre>\n<p>Il faut ensuite builder de nouveau l&rsquo;application :<\/p>\n<pre>\nquarkus build --native\ngcloud builds submit --tag gcr.io\/PROJECT-ID\/quarkus-cloud-run\n<\/pre>\n<p>Lors du d\u00e9ploiement, il faut sp\u00e9cifier \u00e0 Cloud Run les health checks de l&rsquo;application, ici, j&rsquo;ai uniquement sp\u00e9cifi\u00e9 une startup probe :<\/p>\n<pre>\ngcloud run deploy --image gcr.io\/PROJECT-ID\/quarkus-cloud-run \\\n  --startup-probe httpGet.path=\/q\/health\/started,httpGet.port=8080\n<\/pre>\n<p>Quarkus expose diff\u00e9rentes endpoints pour health check :<\/p>\n<ul>\n<li>\/q\/health\/started<\/li>\n<li>\/q\/health\/live<\/li>\n<li>\/q\/health\/ready<\/li>\n<\/ul>\n<p>Vous pouvez les utiliser pour les diff\u00e9rents health checks support\u00e9s par Cloud Run. Plus d&rsquo;information sur les health checks de cloud run et la mani\u00e8re de les d\u00e9clarer <a href=\"https:\/\/docs.cloud.google.com\/run\/docs\/configuring\/healthchecks\">ici<\/a>.<\/p>\n<p>Si vous appelez le endpoint <code>\/q\/health\/started<\/code> utilis\u00e9 par Cloud Run comme startup probe, vous devrez avoir une r\u00e9ponse comme celle-ci :<\/p>\n<pre>\n{\n    \"status\": \"UP\",\n    \"checks\": [\n    ]\n}\n<\/pre>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Quarkus est un framework de d\u00e9veloppement de microservice pens\u00e9 pour le cloud et les conteneurs. Il est pens\u00e9 pour avoir une utilisation m\u00e9moire r\u00e9duite et un temps de d\u00e9marrage le plus court possible. Il se base principalement sur des standards (Jakarta EE, Eclipse MicroProfile, \u2026) et permet l\u2019utilisation de librairies Java matures et tr\u00e8s r\u00e9pandues via ses extensions (Hibernate, RESTeasy, Vert.X, Kafka, \u2026). Quarkus a \u00e9t\u00e9 pens\u00e9 pour le cloud d\u00e8s sa conception, il permet le d\u00e9veloppement d\u2019applications Cloud Ready&#8230;<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/deployer-une-application-quarkus-dans-cloud-run\/\">Lire la suite<span class=\"screen-reader-text\"> Lire la suite<\/span><\/a><\/p><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[9],"tags":[233,179,11,167],"class_list":["post-2089","post","type-post","status-publish","format-standard","hentry","category-informatique","tag-cloud-run","tag-gcp","tag-java","tag-quarkus"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":1345,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/quarkus-et-les-google-cloud-functions\/","url_meta":{"origin":2089,"position":0},"title":"Quarkus et les  Google Cloud Functions","author":"admin","date":"mardi  2 novembre 2021","format":false,"excerpt":"Quarkus est un framework de d\u00e9veloppement de microservice pens\u00e9 pour le cloud et les conteneurs. Il est pens\u00e9 pour avoir une utilisation m\u00e9moire r\u00e9duite et un temps de d\u00e9marrage le plus court possible. Il se base principalement sur des standards (Jakarta EE, Eclipse MicroProfile, \u2026) et permet l'utilisation de librairies\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1560,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/quarkus-tip-tester-une-fonction-google-cloud\/","url_meta":{"origin":2089,"position":1},"title":"Quarkus Tip : Tester une fonction Google Cloud","author":"admin","date":"jeudi 29 d\u00e9cembre 2022","format":false,"excerpt":"J'ai r\u00e9cemment contribu\u00e9 une PR \u00e0 Quarkus qui contient un framework de test pour les fonctions Google Cloud. Quarkus supporte la cr\u00e9ation de fonction Google Cloud de trois mani\u00e8res diff\u00e9rentes : En utilisant l'API de Google Cloud. En utilisant une extension HTTP de Quarkus : RESTEasy, Reactive routes, Servlet, Spring\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1440,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/google-cloud-functions-2nd-gen\/","url_meta":{"origin":2089,"position":2},"title":"Google Cloud Functions 2nd gen","author":"admin","date":"mardi 29 mars 2022","format":false,"excerpt":"Google vient de sortir en beta la seconde g\u00e9n\u00e9ration des Google Cloud Functions. Pour ceux qui ne connaissent pas encore les Google Cloud Functions vous pouvez lire mes articles J\u2019ai test\u00e9 Java Google Cloud Functions et Quarkus et les Google Cloud Functions. Cette seconde g\u00e9n\u00e9ration apporte : Un temps de\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/loicmathieu.fr\/wordpress\/wp-content\/uploads\/cloud-function-gen2-instances.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/loicmathieu.fr\/wordpress\/wp-content\/uploads\/cloud-function-gen2-instances.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/loicmathieu.fr\/wordpress\/wp-content\/uploads\/cloud-function-gen2-instances.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1960,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/creer-un-chatbot-avec-google-gemini-vertex-ai-et-quarkus\/","url_meta":{"origin":2089,"position":3},"title":"Cr\u00e9er un chatbot avec Google Gemini Vertex AI et Quarkus","author":"admin","date":"vendredi 27 juin 2025","format":false,"excerpt":"J'ai r\u00e9cemment cr\u00e9\u00e9 une extension Quarkus qui permet d'acc\u00e9der \u00e0 Google Vertex AI. Dans cet article, je vais utiliser cette extension pour cr\u00e9er un chatbot. La premi\u00e8re \u00e9tape consiste \u00e0 cr\u00e9er un projet Quarkus contenant les extensions REST et Google Cloud Vertex AI. Voici les extensions \u00e0 ajouter \u00e0 votre\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/loicmathieu.fr\/wordpress\/wp-content\/uploads\/Capture-decran-du-2025-06-27-14-22-26-1024x376.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/loicmathieu.fr\/wordpress\/wp-content\/uploads\/Capture-decran-du-2025-06-27-14-22-26-1024x376.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/loicmathieu.fr\/wordpress\/wp-content\/uploads\/Capture-decran-du-2025-06-27-14-22-26-1024x376.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":975,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/devfest-nantes-2019-developper-une-api-cloud-ready-avec-quarkus\/","url_meta":{"origin":2089,"position":4},"title":"Devfest Nantes 2019 &#8211; D\u00e9velopper une API Cloud Ready avec Quarkus","author":"admin","date":"jeudi 31 octobre 2019","format":false,"excerpt":"La semaine derni\u00e8re j'\u00e9tais au Devfest Nantes pour parler Quarkus lors d'un talk intitul\u00e9 \"D\u00e9velopper une API Cloud Ready avec Quarkus\". Si ce sujet vous int\u00e9r\u00e8sse, voici le lien vers la vid\u00e9o : https:\/\/www.youtube.com\/watch?v=6VdChn13f3U&list=PLuZ_sYdawLiUjPGPsOvBcgBxC6yP_HSA6&index=4","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1138,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/ma-deuxieme-annee-chez-zenika\/","url_meta":{"origin":2089,"position":5},"title":"Ma deuxi\u00e8me ann\u00e9e chez Zenika","author":"admin","date":"jeudi  3 septembre 2020","format":false,"excerpt":"Aujourd\u2019hui est un jour sp\u00e9cial, cela fait deux ans que je suis arriv\u00e9 chez Zenika, apr\u00e8s 9 ans en tant qu\u2019architecte logiciel dans la DSI d\u2019un grand groupe de retail. L'ann\u00e9e derni\u00e8re j'avais fait le bilan de ma premi\u00e8re ann\u00e9e pass\u00e9e : 1 an chez Zenika. Et un an apr\u00e8s,\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts\/2089","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/comments?post=2089"}],"version-history":[{"count":9,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts\/2089\/revisions"}],"predecessor-version":[{"id":2103,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts\/2089\/revisions\/2103"}],"wp:attachment":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/media?parent=2089"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/categories?post=2089"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/tags?post=2089"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}