[JAVA] Essayez d'exécuter une application créée avec Quarkus sur Heroku

introduction

Vous utilisez Heroku pour exécuter des applications Web gratuitement, non? Cependant, si vous l'utilisez gratuitement, si vous quittez l'application pendant plus de 30 minutes (aucune demande), le serveur se mettra en veille.

Si vous accédez à l'application après la mise en veille, la réponse prendra un certain temps. Donc, afin de raccourcir le temps de démarrage, j'ai essayé d'utiliser GraalVM, qui a récemment attiré l'attention, et Quarkus, qui peut exécuter des applications Web Java sur GraalVM.

Cette fois, je voudrais comparer comment exécuter Quarkus avec Heroku et le temps de démarrage avec Spring Boot.

Conditions préalables

--Dispose d'un compte Heroku

Préparation de l'application Quarkus

Créer une application

Veuillez vous référer à l'article suivant pour créer une application.

J'ai essayé le framework Java "Quarkus"

Création de fichiers Docker

Cette fois, nous utiliserons le registre de conteneurs Heroku pour le registre Docker.

Créez le fichier suivant.

src/main/docker/Dockerfile.web


FROM registry.fedoraproject.org/fedora-minimal
WORKDIR /work/
COPY *-runner /work/application
RUN chmod 775 /work
EXPOSE 8080
CMD ["./application", "-Dquarkus.http.host=0.0.0.0", "-Dquarkus.http.port=${PORT}"]

-Dquarkus.http.port=${PORT}Est requis pour démarrer sur le port spécifié par Heroku. Il ne peut pas être démarré sans cela.


 À propos, vous pouvez modifier le port de lancement de l'application Quarkus en modifiant la partie $ {PORT}.

## Connectez-vous au conteneur Heroku

```console
heroku container:login

Créer une application sur Heroku

heroku create <Nom de l'application>

Après cela, veuillez utiliser la racine du projet.

Push to Docker Registry

heroku container:push -R -a <Nom de l'application>

Démarrer Docker

heroku container:release web -a <Nom de l'application>

Contrôle de fonctionnement

curl https://<Nom de l'application>.herokuapp.com/hello

Confirmez que bonjour est sorti.

Préparation de l'application Spring Boot

Créer une application

RestController


@SpringBootApplication
@RestController
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

	@RequestMapping("hello")
	public String home() {
		return "hello";
	}
}

Créer un fichier Docker

Dockerfile


FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY target/app.jar app.jar
CMD ["java","-jar","app.jar","--server.port=${PORT}"]

** Les étapes suivantes sont identiques à celles de Quarkus, elles sont donc omises. ** **

Mesurer le temps de démarrage après le sommeil

Attendez que le serveur heroku soit dans l'état suivant. スクリーンショット_2019-04-10_12_35_14.png

Exécutez la commande suivante pour mesurer.

Mesure des applications Quarkus

curl https://<Nom de l'application Quarkus>.herokuapp.com/hello -o /dev/null -w  "%{time_starttransfer}\n" -s
7.038011

Mesure de l'application Spring Boot

curl https://<Nom de l'application Spring Boot>.herokuapp.com/hello -o /dev/null -w  "%{time_starttransfer}\n" -s
15.208555

** Quarkus démarre désormais deux fois plus vite que le Spring Boot **

Recommended Posts

Essayez d'exécuter une application créée avec Quarkus sur Heroku
Essayez d'exécuter SlackBot réalisé avec Ruby x Sinatra sur AWS Lambda
Publiez l'application avec ruby on rails
Je veux pousser une application créée avec Rails 6 vers GitHub
Puis-je essayer toutes les combinaisons avec une application comportant 20 cases à cocher?
Créez une application avec Spring Boot 2
Essayez d'exécuter cloudera manager avec docker
Essayez Quarkus avec IBM Cloud Shell
Créez une application avec Spring Boot
Essayez d'exécuter Spring Boot sur Kubernetes
Erreur de base de données concernant le déploiement à l'aide d'Heroku
Exécuter des applications écrites en Java8 en Java6
Créer une application et la déployer pour la première fois avec heroku
Essayez d'exécuter MySql et Blazor avec docker-compose
Essayez de déployer l'application Rails sur EC2-Part 1-
Étapes pour publier une application sur Heroku
J'ai créé un serveur écologique avec scala
Essayez Health Check sur Azure App Service.
J'ai créé une application Janken avec kotlin
Déployer des applications Web Java sur Heroku
J'ai créé une application de calculatrice sur Android
Créer un environnement avec Docker sur AWS
Essayer avec la déclaration de ressources dans l'application Web
J'ai créé une application Janken avec Android
Hello World, une application d'interface graphique multiplateforme avec Groovy fonctionnant sur la plate-forme Java
Essayez d'exécuter ScalarDB sur WSL Ubuntu (Construction de l'environnement)
Rétrograder une application existante créée avec les rails 5.2.4 vers 5.1.6
J'ai créé une application par moi-même! (Application de gestion de la lecture)
J'ai créé une application Android pour le service MiRm
Connexion SSH au serveur d'applications avec heroku
J'ai créé un robot LINE avec Rails + heroku
J'ai fait un portfolio avec Ruby On Rails
J'ai essayé de démarrer avec Gradle sur Heroku