Vorkonfigurierte GlassFish Docker-Container auf Elastic Beanstalk - AWS Elastic Beanstalk

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Vorkonfigurierte GlassFish Docker-Container auf Elastic Beanstalk

Anmerkung

Am 18. Juli 2022 hat Elastic Beanstalk den Status aller Plattformbranchen, die auf Amazon Linux AMI (AL1) basieren, auf eingestellt gesetzt. Weitere Informationen zur Migration zu einem aktuellen und vollständig unterstützten Plattformzweig für Amazon Linux 2023 finden Sie unter Migrieren der Elastic-Beanstalk-Linux-Anwendung zu Amazon Linux 2023 oder Amazon Linux 2.

Der vorkonfigurierte GlassFish Docker-Plattformzweig, der auf Amazon Linux AMI (AL1) läuft, wird nicht mehr unterstützt. Um Ihre GlassFish Anwendung auf eine unterstützte Amazon Linux 2023-Plattform zu migrieren, stellen GlassFish Sie Ihren Anwendungscode auf einem Amazon Linux 2023 Docker-Image bereit. Weitere Informationen finden Sie im Thema Bereitstellung einer GlassFish Anwendung auf der Docker-Plattform: ein Migrationspfad zu Amazon Linux 2023.

Dieser Abschnitt zeigt die lokale Entwicklung einer Beispielanwendung und die anschließende Bereitstellung in Elastic Beanstalk mit einem vorkonfigurierten Docker-Container.

Einrichten der lokalen Entwicklungsumgebung

Für diese Anleitung verwenden wir eine Beispielanwendung. GlassFish

Einrichten Ihrer Umgebung
  1. Erstellen Sie einen neuen Ordner für die Beispielanwendung.

    ~$ mkdir eb-preconf-example ~$ cd eb-preconf-example
  2. Laden Sie den Beispiel-Anwendungscode in den neuen Ordner herunter.

    ~$ wget https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/samples/docker-glassfish-v1.zip ~$ unzip docker-glassfish-v1.zip ~$ rm docker-glassfish-v1.zip

Lokales Entwickeln und Testen

Um eine Beispielanwendung zu entwickeln GlassFish
  1. Fügen Sie eine Dockerfile-Datei zum Stammordner der Anwendung hinzu. Geben Sie in der Datei das AWS Elastic Beanstalk Docker-Basis-Image an, das zum Ausführen Ihres lokalen vorkonfigurierten Docker-Containers verwendet werden soll. Später werden Sie Ihre Anwendung auf einer vorkonfigurierten GlassFish Docker-Version von Elastic Beanstalk bereitstellen. Wählen Sie das Docker-Basis-Image, das diese Plattformversion verwendet. Informationen zum Bestimmen des aktuellen Docker-Image der Plattformversion finden Sie im Abschnitt Vorkonfigurierter Docker der Seite Von AWS Elastic Beanstalk unterstützte Plattformen im AWS Elastic Beanstalk -Plattformhandbuch.

    Beispiel b-preconf-example~/E /Dockerfile
    # For Glassfish 5.0 Java 8 FROM amazon/aws-eb-glassfish:5.0-al-onbuild-2.11.1

    Weitere Informationen zur Verwendung von Dockerfile finden Sie unter Vorbereiten Ihres Docker-Images für die Bereitstellung auf Elastic Beanstalk.

  2. Erstellen Sie das Docker-Image.

    ~/eb-preconf-example$ docker build -t my-app-image .
  3. Führen Sie den Docker-Container aus dem Image aus.

    Anmerkung

    Sie müssen das Flag -p einbinden, um Port 8080 auf dem Container dem Localhost-Port 3000 zuzuordnen. In Elastic Beanstalk stellen die Docker-Container die Anwendung stets über Port 8080 auf dem Container bereit. Mit den Flags -it wird das Image als interaktiver Prozess ausgeführt. Mithilfe des Flags --rm wird das Container-Dateisystem nach Beendigung des Containers bereinigt. Optional können Sie das Flag -d einbeziehen und das Image als Daemon ausführen.

    $ docker run -it --rm -p 3000:8080 my-app-image
  4. Um die Beispielanwendung anzuzeigen, geben Sie Folgendes URL in Ihren Webbrowser ein.

    http://localhost:3000
    Die GlassFish Beispielanwendung, die in einem Webbrowser angezeigt wird

Bereitstellen in Elastic Beanstalk

Nachdem Sie die Anwendung getestet haben, können Sie diese nun in Elastic Beanstalk bereitstellen.

So stellen Sie Ihre Anwendung in Elastic Beanstalk bereit
  1. Ändern Sie im Stammordner der Anwendung den Dateinamen von Dockerfile in Dockerfile.local. Dieser Schritt ist erforderlich, damit Elastic Beanstalk denDockerfile, der die richtigen Anweisungen für Elastic Beanstalk enthält, verwenden kann, um auf jeder EC2 Amazon-Instance in Ihrer Elastic Beanstalk Beanstalk-Umgebung ein benutzerdefiniertes Docker-Image zu erstellen.

    Anmerkung

    Dieser Schritt ist nicht nötig, wenn die Dockerfile-Datei Anweisungen enthält, mit denen das Docker-Basis-Image der Plattformversion geändert wird. Sie brauchen überhaupt keine Dockerfile-Datei, sofern die Dockerfile-Datei nur eine FROM-Zeile enthält und darin das Basis-Image angibt, mit dem der Container erstellt werden soll. In diesem Fall ist die Dockerfile-Datei überflüssig.

  2. Erstellen Sie das Quell-Bundle der Anwendung.

    ~/eb-preconf-example$ zip myapp.zip -r *
  3. Öffnen Sie die Elastic Beanstalk Beanstalk-Konsole mit diesem vorkonfigurierten Link: console.aws.amazon.com/elasticbeanstalk/home#/? newApplication applicationNameenvironmentType=Tutorials& = LoadBalanced

  4. Wählen Sie für Platform (Plattform) unter Preconfigured – Docker (Vorkonfiguriert – Docker) die Option Glassfish aus.

  5. Unter Application code wählen Sie Upload your code und dann Upload aus.

  6. Wählen Sie Local file (Lokale Datei), wählen Sie Browse (Durchsuchen) und öffnen Sie dann das Quell-Bundle, das Sie erstellt haben.

  7. Klicken Sie auf Hochladen.

  8. Klicken Sie auf Review and launch (Überprüfen und starten).

  9. Prüfen Sie die verfügbaren Einstellungen und wählen Sie Create app (Anwendung erstellen) aus.

  10. Wenn die Umgebung erstellt wurde, können Sie die bereitgestellte Anwendung anzeigen. Wählen Sie die Umgebung ausURL, die oben im Konsolen-Dashboard angezeigt wird.

Bereitstellung einer GlassFish Anwendung auf der Docker-Plattform: ein Migrationspfad zu Amazon Linux 2023

Ziel dieses Tutorials ist es, Kunden, die die vorkonfigurierte GlassFish Docker-Plattform (basierend auf Amazon LinuxAMI) verwenden, einen Migrationspfad zu Amazon Linux 2023 zu bieten. Sie können Ihre GlassFish Anwendung auf Amazon Linux 2023 migrieren, indem Sie Ihren Anwendungscode auf einem Amazon Linux 2023 Docker-Image bereitstellen GlassFish .

Das Tutorial führt Sie durch die Verwendung der AWS Elastic Beanstalk Docker-Plattform, um eine auf dem Java GlassFish EE-Anwendungsserver basierende Anwendung in einer Elastic Beanstalk Beanstalk-Umgebung bereitzustellen.

Wir demonstrieren zwei Ansätze zum Erstellen eines Docker-Images:

  • Einfach — Stellen Sie den Quellcode Ihrer GlassFish Anwendung bereit und lassen Sie Elastic Beanstalk im Rahmen der Bereitstellung Ihrer Umgebung ein Docker-Image erstellen und ausführen. Dies ist einfach einzurichten, zu Kosten einer erhöhten Bereitstellungszeit der Instance.

  • Fortgeschritten – Erstellen Sie ein benutzerdefiniertes Docker-Image, das Ihren Anwendungscode und Abhängigkeiten enthält, und stellen Sie es Elastic Beanstalk für die Verwendung in Ihrer Umgebung bereit. Dieser Ansatz ist etwas komplexer und verkürzt die Bereitstellungszeit von Instances in Ihrer Umgebung.

Voraussetzungen

In diesem Tutorial wird davon ausgegangen, dass Sie über einige Kenntnisse der grundlegenden Elastic Beanstalk Beanstalk-Operationen, der Elastic Beanstalk Beanstalk-Befehlszeilenschnittstelle (EBCLI) und Docker verfügen. Sofern noch nicht geschehen, starten Sie anhand der Anleitung in Erste Schritte mit Elastic Beanstalk die erste Elastic-Beanstalk-Umgebung. In diesem Tutorial wird das EB verwendetCLI, Sie können jedoch auch Umgebungen erstellen und Anwendungen hochladen, indem Sie die Elastic Beanstalk Beanstalk-Konsole verwenden.

Für diese Anleitung benötigen Sie außerdem die folgenden Docker-Komponenten:

  • Eine funktionierende lokale Installation von Docker. Weitere Informationen finden Sie unter Docker erhalten auf der Docker-Docs-Website.

  • Zugriff auf Docker-Hub. Sie müssen eine Docker-ID erstellen, um auf den Docker-Hub zuzugreifen. Weitere Informationen finden Sie unter Freigeben der Anwendung auf der Docker-Dokumentationswebsite.

Weitere Informationen über das Konfigurieren von Docker-Umgebungen auf Elastic-Beanstalk-Plattformen finden Sie unter Vorbereiten Ihres Docker-Images für die Bereitstellung auf Elastic Beanstalk in diesem Kapitel.

Einfaches Beispiel: Geben Sie Ihren Anwendungscode ein

Dies ist eine einfache Möglichkeit, Ihre GlassFish Anwendung bereitzustellen. Sie geben den Quellcode Ihrer Anwendung zusammen mit der in diesem Tutorial enthaltenen Dockerfile an. Elastic Beanstalk erstellt ein Docker-Image, das Ihre Anwendung und den GlassFish Software-Stack enthält. Dann führt Elastic Beanstalk das Image auf den Instances Ihrer Umgebung aus.

Ein Problem mit diesem Ansatz besteht darin, dass Elastic Beanstalk das Docker-Image lokal erstellt, wenn es eine Instance für Ihre Umgebung erstellt. Das Erstellen des Image erhöht die Zeit für die Bereitstellung von Instances. Diese Auswirkung beschränkt sich nicht auf die anfängliche Erstellung der Umgebung – auch bei Scale-Out-Aktionen kann dies stattfinden.

Um eine Umgebung mit einer Beispielanwendung zu starten GlassFish
  1. Laden Sie das Beispiel docker-glassfish-al2-v1.zip herunter und entpacken Sie die .zip-Datei dann in ein Verzeichnis in Ihrer Entwicklungsumgebung.

    ~$ 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

    Ihre Verzeichnisstruktur sollte wie folgt aussehen.

    ~/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

    Die folgenden Dateien sind der Schlüssel zum Erstellen und Ausführen eines Docker-Containers in Ihrer Umgebung:

    • Dockerfile – Enthält Anweisungen, die Docker verwendet, um ein Image mit Ihrer Anwendung und erforderlichen Abhängigkeiten zu erstellen.

    • glassfish-start.sh – Ein Shell-Skript, das das Docker-Image ausführt, um Ihre Anwendung zu starten.

    • Dockerrun.aws.json— Stellt einen Logging-Schlüssel bereit, um das GlassFish Anwendungsserver-Protokoll in Logdateianfragen aufzunehmen. Wenn Sie nicht an GlassFish Protokollen interessiert sind, können Sie diese Datei weglassen.

  2. Konfigurieren Sie Ihr lokales Verzeichnis für die Bereitstellung in Elastic Beanstalk.

    ~/glassfish-example$ eb init -p docker glassfish-example
  3. (Optional) Verwenden Sie den Befehl eb local run für die lokale Erstellung und Ausführung Ihres Containers.

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

    Weitere Informationen zum eb local-Befehl finden Sie unter eb local. Der Befehl wird unter Windows nicht unterstützt. Alternativ können Sie Ihre Container mit den Befehlen docker build und docker run erstellen und ausführen. Weitere Informationen finden Sie in der Docker-Dokumentation.

  4. (Optional) Wenn Ihr Container ausgeführt wird, verwenden Sie den eb local open-Befehl, um Ihre Anwendung in einem Webbrowser anzuzeigen. Alternativ öffnen Sie http://localhost:8080/ in einem Webbrowser.

    ~/glassfish-example$ eb local open
  5. Verwenden Sie den Befehl eb create, um eine Umgebung zu erstellen und die Anwendung bereitzustellen.

    ~/glassfish-example$ eb create glassfish-example-env
  6. Verwenden Sie nach dem Starten der Umgebung den Befehl eb open, um sie in einem Webbrowser anzuzeigen.

    ~/glassfish-example$ eb open

Wenn Sie mit dem Beispiel fertig sind, beenden Sie die Umgebung und löschen Sie zugehörige Ressourcen.

~/glassfish-example$ eb terminate --all

Fortgeschrittenes Beispiel: Bereitstellen eines vorgefertigten Docker-Images

Dies ist eine fortgeschrittenere Methode zur Bereitstellung Ihrer GlassFish Anwendung. Aufbauend auf dem ersten Beispiel erstellen Sie ein Docker-Image, das Ihren Anwendungscode und den GlassFish Software-Stack enthält, und übertragen es auf Docker Hub. Nachdem Sie diesen einmaligen Schritt ausgeführt haben, können Sie Elastic Beanstalk-Umgebungen basierend auf Ihrem benutzerdefinierten Image starten.

Wenn Sie eine Umgebung starten und Ihr Docker-Image bereitstellen, laden Instances in Ihrer Umgebung dieses Image direkt herunter, verwenden es direkt und müssen kein Docker-Image erstellen. So wird die Bereitstellungszeit der Instance verkürzt.

Hinweise
  • In den folgenden Schritten erstellen Sie ein öffentlich verfügbares Docker-Image.

  • Sie verwenden Docker-Befehle aus Ihrer lokalen Docker-Installation zusammen mit Ihren Docker-Hub-Anmeldeinformationen. Weitere Informationen finden Sie im vorherigen Abschnitt mit den Voraussetzungen in diesem Thema.

Um eine Umgebung mit einem vordefinierten GlassFish Anwendungs-Docker-Image zu starten
  1. Laden Sie das Beispiel docker-glassfish-al2-v1.zip herunter und entpacken Sie es wie im vorherigen einfachen Beispiel. Wenn Sie dieses Beispiel bereits abgeschlossen haben, können Sie das bereits vorhandene Verzeichnis verwenden.

  2. Erstellen Sie ein Docker-Image und schieben Sie es an Docker Hub. Geben Sie Ihre Docker-ID für ein docker-id um sich bei Docker Hub anzumelden.

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

    Bevor Sie Ihr Image übertragen, müssen Sie möglicherweise ausführe docker login. Wenn Sie den Befehl ohne Parameter ausführen, werden Sie aufgefordert, Ihre Docker-Hub-Anmeldeinformationen einzugeben.

  3. Erstellen Sie ein zusätzliches Verzeichnis.

    ~$ mkdir glassfish-prebuilt ~$ cd glassfish-prebuilt
  4. Kopieren Sie das folgende Beispiel in eine Datei mit dem Namen Dockerrun.aws.json.

    Beispiel ~/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. Konfigurieren Sie Ihr lokales Verzeichnis für die Bereitstellung in Elastic Beanstalk.

    ~/glassfish-prebuilt$ eb init -p docker glassfish-prebuilt$
  6. (Optional) Verwenden Sie den Befehl eb local run, um den Container lokal auszuführen.

    ~/glassfish-prebuilt$ eb local run --port 8080
  7. (Optional) Wenn Ihr Container ausgeführt wird, verwenden Sie den eb local open-Befehl, um Ihre Anwendung in einem Webbrowser anzuzeigen. Alternativ öffnen Sie http://localhost:8080/ in einem Webbrowser.

    ~/glassfish-prebuilt$ eb local open
  8. Verwenden Sie den Befehl eb create, um eine Umgebung zu erstellen und Ihr Docker-Image bereitzustellen.

    ~/glassfish-prebuilt$ eb create glassfish-prebuilt-env
  9. Verwenden Sie nach dem Starten der Umgebung den Befehl eb open, um sie in einem Webbrowser anzuzeigen.

    ~/glassfish-prebuilt$ eb open

Wenn Sie mit dem Beispiel fertig sind, beenden Sie die Umgebung und löschen Sie zugehörige Ressourcen.

~/glassfish-prebuilt$ eb terminate --all