Déploiement d'une GlassFish application sur la plateforme Docker : une voie de migration vers Amazon Linux 2023 - AWS Elastic Beanstalk

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Déploiement d'une GlassFish application sur la plateforme Docker : une voie de migration vers Amazon Linux 2023

L'objectif de ce didacticiel est de fournir aux clients utilisant la GlassFish plateforme Docker préconfigurée (basée sur l'AMI Amazon Linux) un chemin de migration vers Amazon Linux 2023. Vous pouvez migrer votre GlassFish application vers Amazon Linux 2023 en GlassFish déployant le code de votre application sur une image Docker Amazon Linux 2023.

Ce didacticiel explique comment utiliser la plateforme AWS Elastic Beanstalk Docker pour déployer une application basée sur le serveur d'applications Java EE dans un GlassFish environnement Elastic Beanstalk.

Nous illustrons deux approches de création d'une image Docker :

  • Simple : fournissez le code source de votre GlassFish application et laissez Elastic Beanstalk créer et exécuter une image Docker dans le cadre du provisionnement de votre environnement. Ceci est facile à configurer, au prix d'une augmentation du temps de mise en service des instances.

  • Avancé – Créez une image Docker personnalisée contenant votre code d'application et vos dépendances, et fournissez-la à Elastic Beanstalk afin de l'utiliser dans votre environnement. Cette approche est légèrement plus impliquée et réduit le temps de mise en service des instances dans votre environnement.

Prérequis

Ce tutoriel suppose que vous ayez quelques connaissances des opérations Elastic Beanstalk de base, de l'interface de ligne de commande Elastic Beanstalk (EB CLI) et de Docker. Si ce n'est pas déjà fait, suivez les instructions dans Mise en route avec Elastic Beanstalk pour lancer votre premier environnement Elastic Beanstalk. Ce tutoriel utilise l'interface de ligne de commande (CLI) EB, mais vous pouvez également créer des environnements et télécharger des applications à l'aide de la console Elastic Beanstalk.

Pour suivre ce tutoriel, vous aurez également besoin des composants Docker suivants :

  • Une installation locale en état de fonctionnement de Docker. Pour de plus amples informations, veuillez consulter Get Docker (Obtenir Docker) sur le site web de documentation de Docker.

  • Accès à Docker Hub. Vous devez créer un ID Docker pour accéder au Docker Hub. Pour de plus amples informations, veuillez consulter Share the application (Partager l'application) sur le site Web de documentation de Docker.

Pour en savoir plus sur la configuration des environnements Docker sur des plateformes Elastic Beanstalk, consultez Configuration Docker dans ce même chapitre.

Exemple simple : fournissez votre code d'application

Il s'agit d'un moyen simple de déployer votre GlassFish application. Vous fournissez au code source de votre application le fichier Dockerfile inclus dans ce tutoriel. Elastic Beanstalk crée une image Docker qui inclut votre application et la pile logicielle. GlassFish Ensuite, Elastic Beanstalk exécute l'image sur les instances de votre environnement.

Cette approche présente un problème, à savoir qu'Elastic Beanstalk crée l'image Docker localement chaque fois qu'il crée une instance pour votre environnement. La génération de l'image augmente le temps de mise en service de l'instance. Cet impact n'est pas limité à la création initiale de l'environnement. Il se produit également lors des actions de montée en charge.

Pour lancer un environnement avec un exemple d' GlassFish application
  1. Téléchargez l'exemple docker-glassfish-al2-v1.zip, puis développez le fichier .zip dans un répertoire de votre environnement de développement.

    ~$ curl https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/samples/docker-glassfish-al2-v1.zip --output docker-glassfish-al2-v1.zip ~$ mkdir glassfish-example ~$ cd glassfish-example ~/glassfish-example$ unzip ../docker-glassfish-al2-v1.zip

    La structure de votre répertoire doit être la suivante.

    ~/glassfish-example |-- Dockerfile |-- Dockerrun.aws.json |-- glassfish-start.sh |-- index.jsp |-- META-INF | |-- LICENSE.txt | |-- MANIFEST.MF | `-- NOTICE.txt |-- robots.txt `-- WEB-INF `-- web.xml

    Les fichiers suivants sont essentiels à la création et à l'exécution d'un conteneur Docker dans votre environnement :

    • Dockerfile – Fournit des instructions que Docker utilise pour créer une image avec votre application et les dépendances requises.

    • glassfish-start.sh – Script shell exécuté par l'image Docker pour démarrer votre application.

    • Dockerrun.aws.json— Fournit une clé de journalisation, pour inclure le journal du serveur GlassFish d'applications dans les requêtes du fichier journal. Si les GlassFish journaux ne vous intéressent pas, vous pouvez omettre ce fichier.

  2. Configurez votre répertoire local pour le déploiement sur Elastic Beanstalk.

    ~/glassfish-example$ eb init -p docker glassfish-example
  3. (Facultatif) Utilisez la commande eb local run pour créer et exécuter votre conteneur en local.

    ~/glassfish-example$ eb local run --port 8080
    Note

    Pour en savoir plus sur la commande eb local, consultez eb local. La commande n'est pas prise en charge sur Windows. Vous pouvez également créer et exécuter votre conteneur avec les commandes docker build et docker run. Pour plus d'informations, consultez la documentation Docker.

  4. (Facultatif) Lorsque votre conteneur est en cours d'exécution, utilisez la commande eb local open pour afficher votre application dans un navigateur web. Vous pouvez également ouvrir http://localhost:8080/ dans un navigateur web.

    ~/glassfish-example$ eb local open
  5. Utilisez la commande eb create pour créer un environnement et déployer votre application.

    ~/glassfish-example$ eb create glassfish-example-env
  6. Après le lancement de votre environnement, utilisez la commande eb open pour l'afficher dans un navigateur web.

    ~/glassfish-example$ eb open

Lorsque vous avez terminé l'exemple, arrêtez l'environnement et supprimez les ressources associées.

~/glassfish-example$ eb terminate --all

Exemple avancé : fournir une image Docker préconstruite

Il s'agit d'une méthode plus avancée pour déployer votre GlassFish application. Sur la base du premier exemple, vous créez une image Docker contenant le code de votre application et la pile GlassFish logicielle, puis vous la transférez vers Docker Hub. Après avoir effectué cette étape unique, vous pouvez lancer des environnements Elastic Beanstalk basés sur votre image personnalisée.

Lorsque vous lancez un environnement et que vous fournissez votre image Docker, les instances de votre environnement téléchargent et utilisent cette image directement et n'ont pas besoin de créer une image Docker. Par conséquent, le temps de mise en service de l'instance est réduit.

Remarques
  • Les étapes suivantes créent une image Docker disponible publiquement.

  • Vous utiliserez les commandes Docker de votre installation Docker locale, ainsi que vos informations d'identification Docker Hub. Pour plus d'informations, consultez la section Prérequis précédente de cette rubrique.

Pour lancer un environnement avec une image Docker d' GlassFish application prédéfinie
  1. Téléchargez et développez l'exemple docker-glassfish-al2-v1.zip comme dans l'exemple simple précédent. Si vous avez terminé cet exemple, vous pouvez utiliser le répertoire que vous possédez déjà.

  2. Créez une image Docker et poussez-la vers Docker Hub. Saisissez votre ID Docker pour docker-id pour vous connecter à Docker Hub.

    ~/glassfish-example$ docker build -t docker-id/beanstalk-glassfish-example:latest . ~/glassfish-example$ docker push docker-id/beanstalk-glassfish-example:latest
    Note

    Avant de transmettre votre image, il se peut que vous deviez exécuter docker login. Vous serez invité à saisir vos informations d'identification Docker Hub si vous exécutez la commande sans paramètres.

  3. Créez un répertoire supplémentaire.

    ~$ mkdir glassfish-prebuilt ~$ cd glassfish-prebuilt
  4. Copiez l'exemple suivant dans un fichier nommé Dockerrun.aws.json.

    Exemple ~/glassfish-prebuilt/Dockerrun.aws.json
    { "AWSEBDockerrunVersion": "1", "Image": { "Name": "docker-username/beanstalk-glassfish-example" }, "Ports": [ { "ContainerPort": 8080, "HostPort": 8080 } ], "Logging": "/usr/local/glassfish5/glassfish/domains/domain1/logs" }
  5. Configurez votre répertoire local pour le déploiement sur Elastic Beanstalk.

    ~/glassfish-prebuilt$ eb init -p docker glassfish-prebuilt$
  6. (Facultatif) Utilisez la commande eb local run pour exécuter votre conteneur localement.

    ~/glassfish-prebuilt$ eb local run --port 8080
  7. (Facultatif) Lorsque votre conteneur est en cours d'exécution, utilisez la commande eb local open pour afficher votre application dans un navigateur web. Vous pouvez également ouvrir http://localhost:8080/ dans un navigateur web.

    ~/glassfish-prebuilt$ eb local open
  8. Utilisez la commande eb create pour créer un environnement et déployer votre image Docker.

    ~/glassfish-prebuilt$ eb create glassfish-prebuilt-env
  9. Après le lancement de votre environnement, utilisez la commande eb open pour l'afficher dans un navigateur web.

    ~/glassfish-prebuilt$ eb open

Lorsque vous avez terminé l'exemple, arrêtez l'environnement et supprimez les ressources associées.

~/glassfish-prebuilt$ eb terminate --all