Introduction
Fly.io est une plateforme incroyable pour déployer des applications à proximité de vos utilisateurs dans le monde entier. Cependant, si vous êtes un développeur Java souhaitant lancer une application Spring Boot, vous pourriez rencontrer un moment d'hésitation.
Contexte Technique
Au moment de la rédaction, Fly.io ne propose pas de support natif pour Spring de la même manière que pour les options répertoriées sur leur page de langages et de frameworks pris en charge. Cependant, le déploiement d'une application Spring Boot sur Fly.io est toujours très simple. Fly.io gère les conteneurs Docker standard de manière transparente. Si vous avez déjà un Dockerfile pour votre projet, vous êtes prêt à partir. Vous pouvez suivre les instructions de déploiement de Dockerfile de Fly.io, et votre application sera en ligne en un rien de temps.
Si vous n'avez pas de Dockerfile et ne souhaitez pas en écrire ou en maintenir un, vous pouvez utiliser les Cloud Native Buildpacks, qui sont intégrés directement dans Maven et Gradle. Avec une seule commande comme ./mvnw spring-boot:build-image ou ./gradlew bootBuildImage, Spring Boot va empaqueter votre application dans une image Docker prête pour la production.
Analyse et Implications
Le processus de déploiement sur Fly.io implique plusieurs étapes. Tout d'abord, vous devez informer Fly.io de votre projet en exécutant la commande fly launch à la racine de votre projet Spring Boot. Suivez les invites interactives pour configurer le nom et la région de votre application. Cette commande configure votre application sur Fly.io et génère un fichier de configuration fly.toml dans votre répertoire de projet.
Ensuite, vous allez utiliser l'intégration de buildpack de Spring Boot pour créer votre image et la marquer immédiatement pour le registre Docker de Fly.io. Assurez-vous que votre démon Docker est en cours d'exécution localement avant d'exécuter cette commande. Si vous utilisez Gradle, utilisez ./gradlew bootBuildImage --imageName=registry.fly.io/{NOM_DE_VOTRE_APPLICATION}:latest. Si vous utilisez Maven, utilisez ./mvnw spring-boot:build-image -Dspring-boot.build-image.imageName=registry.fly.io/{NOM_DE_VOTRE_APPLICATION}:latest. Remplacez {NOM_DE_VOTRE_APPLICATION} par le nom que vous avez choisi pendant l'étape fly launch.
Perspective
Avec l'image construite et marquée avec succès, vous devez la pousser vers le registre interne de Fly.io. Tout d'abord, authentifiez votre client Docker local avec Fly, puis poussez l'image. Utilisez flyctl auth docker pour l'authentification, puis docker push registry.fly.io/{NOM_DE_VOTRE_APPLICATION}:latest pour pousser l'image. Enfin, dites à Fly.io de déployer une nouvelle version en utilisant cette image spécifique en exécutant flyctl deploy --image registry.fly.io/{NOM_DE_VOTRE_APPLICATION}:latest. Vous avez ainsi déployé avec succès votre application Spring Boot sur Fly.io en utilisant le support de buildpack intégré de Spring Boot et le registre privé de Fly.io.