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.
--Dispose d'un compte Heroku
Veuillez vous référer à l'article suivant pour créer une application.
J'ai essayé le framework Java "Quarkus"
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
heroku create <Nom de l'application>
Après cela, veuillez utiliser la racine du projet.
heroku container:push -R -a <Nom de l'application>
heroku container:release web -a <Nom de l'application>
curl https://<Nom de l'application>.herokuapp.com/hello
Confirmez que bonjour est sorti.
RestController
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@RequestMapping("hello")
public String home() {
return "hello";
}
}
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. ** **
Attendez que le serveur heroku soit dans l'état suivant.
Exécutez la commande suivante pour mesurer.
curl https://<Nom de l'application Quarkus>.herokuapp.com/hello -o /dev/null -w "%{time_starttransfer}\n" -s
7.038011
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