Konfiguration des Startbefehls für eine Java EE-App in Docker

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Docker hat die Art und Weise, wie wir Anwendungen, einschließlich Java EE (Enterprise Edition)-Anwendungen, entwickeln, verpacken und bereitstellen, revolutioniert. In diesem Tutorial führen wir Sie durch den Prozess der Konfiguration des Startbefehls für eine Java EE-Anwendung, die in einem Docker-Container läuft, um eine nahtlose Bereitstellung und Ausführung Ihrer Webanwendung sicherzustellen.

Einführung in Docker-Container

Docker ist eine beliebte Containerisierungsplattform, die es Entwicklern ermöglicht, Anwendungen konsistent und reproduzierbar zu verpacken und bereitzustellen. Container sind leichte, eigenständige und selbst enthaltene Einheiten, die eine Anwendung, ihre Abhängigkeiten und die notwendige Laufzeitumgebung kapseln.

Was ist ein Docker-Container?

Ein Docker-Container ist eine standardisierte Softwareeinheit, die den Code, die Abhängigkeiten und die Konfiguration einer Anwendung in einem einzigen, portablen und ausführbaren Paket zusammenfasst. Container sind vom Host-Betriebssystem und anderen Containern isoliert, was eine konsistente und zuverlässige Anwendungsbereitstellung gewährleistet.

Vorteile der Verwendung von Docker-Containern

  • Konsistente Umgebungen: Container stellen sicher, dass die Anwendung und ihre Abhängigkeiten zusammen verpackt werden, wodurch das Problem "funktioniert auf meinem Rechner" beseitigt wird.
  • Skalierbarkeit und Flexibilität: Container lassen sich leicht skalieren, wodurch eine effiziente Ressourcennutzung und eine schnelle Anwendungsbereitstellung ermöglicht werden.
  • Portabilität: Containerisierte Anwendungen können auf jedem System ausgeführt werden, das Docker unterstützt, unabhängig von der zugrunde liegenden Infrastruktur.
  • Verbesserte Effizienz: Container sind leichtgewichtig und teilen sich den Kernel des Host-Betriebssystems, was zu schnelleren Startzeiten und einem reduzierten Ressourcenverbrauch führt.

Docker-Architektur

Docker verwendet eine Client-Server-Architektur, bei der der Docker-Client mit dem Docker-Daemon kommuniziert, der für das Erstellen, Ausführen und Verwalten von Docker-Containern zuständig ist.

graph LD subgraph Docker Architektur client([Docker Client]) daemon([Docker Daemon]) client -- API --> daemon daemon -- Images/Container --> storage([Docker Storage]) end

Installation und Konfiguration von Docker

Um mit Docker zu beginnen, müssen Sie die Docker-Engine auf Ihrem System installieren. Der Installationsvorgang variiert je nach Betriebssystem. Für dieses Tutorial verwenden wir Ubuntu 22.04 als Beispiel.

## Installation von Docker auf Ubuntu 22.04
sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker

Sobald Docker installiert ist, können Sie die Installation überprüfen, indem Sie den folgenden Befehl ausführen:

docker version

Dies zeigt die Versionsinformationen für den Docker-Client und den Docker-Daemon an.

Konfiguration des Startbefehls für eine Java EE-Anwendung

Beim Ausführen einer Java EE-Anwendung in einem Docker-Container müssen Sie den Startbefehl konfigurieren, um sicherzustellen, dass die Anwendung ordnungsgemäß im Container gestartet und verwaltet wird.

Verständnis des Startbefehls

Der Startbefehl für eine Java EE-Anwendung in einem Docker-Container wird typischerweise mithilfe der CMD- oder ENTRYPOINT-Anweisung im Dockerfile definiert. Die CMD-Anweisung gibt den Standardbefehl an, der ausgeführt werden soll, wenn der Container gestartet wird, während die ENTRYPOINT-Anweisung den Basisbefehl für den Container festlegt.

Hier ist ein Beispiel für ein Dockerfile, das den Startbefehl für eine Java EE-Anwendung festlegt:

FROM openjdk:11-jdk-slim
COPY target/my-java-ee-app.war /app/
WORKDIR /app
CMD ["java", "-jar", "my-java-ee-app.war"]

In diesem Beispiel gibt die CMD-Anweisung an, dass die Java EE-Anwendung gestartet werden soll, indem der Befehl java -jar my-java-ee-app.war ausgeführt wird.

Anpassung des Startbefehls

In einigen Fällen müssen Sie den Startbefehl für Ihre Java EE-Anwendung anpassen. Dies kann durch Änderung der CMD- oder ENTRYPOINT-Anweisung im Dockerfile erfolgen.

Wenn Ihre Java EE-Anwendung zusätzliche Befehlszeilenargumente oder Umgebungsvariablen benötigt, können Sie die CMD-Anweisung wie folgt ändern:

FROM openjdk:11-jdk-slim
COPY target/my-java-ee-app.war /app/
WORKDIR /app
CMD ["java", "-Xmx512m", "-Dmy.app.env=production", "-jar", "my-java-ee-app.war"]

In diesem Beispiel enthält die CMD-Anweisung zusätzliche JVM-Optionen (-Xmx512m) und eine benutzerdefinierte Umgebungsvariable (-Dmy.app.env=production), die dem Java-Befehl beim Starten des Containers übergeben werden.

Überschreiben des Startbefehls

Sie können den Startbefehl auch beim Ausführen des Docker-Containers mithilfe des Befehls docker run überschreiben. Dies kann nützlich sein, wenn Sie einen anderen Befehl oder ein Skript im Container ausführen oder zusätzliche Argumente an die Anwendung übergeben möchten.

docker run -d -p 8080:8080 my-java-ee-app-image java -jar /app/my-java-ee-app.war --spring.profiles.active=dev

In diesem Beispiel überschreibt der Befehl docker run den im Dockerfile definierten Startbefehl und führt die Java EE-Anwendung mit einem bestimmten Spring-Profil (--spring.profiles.active=dev) aus.

Bereitstellung der Java EE-App in Docker

Nachdem Sie den Startbefehl für Ihre Java EE-Anwendung konfiguriert haben, können Sie mit dem Erstellen und Bereitstellen des Docker-Images fortfahren.

Erstellen des Docker-Images

Um das Docker-Image für Ihre Java EE-Anwendung zu erstellen, können Sie den Befehl docker build verwenden. Angenommen, Sie haben ein Dockerfile im aktuellen Verzeichnis, können Sie den folgenden Befehl ausführen:

docker build -t my-java-ee-app .

Dies erstellt ein neues Docker-Image mit dem Tag my-java-ee-app basierend auf den Anweisungen im Dockerfile.

Ausführen des Docker-Containers

Nach dem Erstellen des Docker-Images können Sie die Java EE-Anwendung in einem Docker-Container mit dem Befehl docker run ausführen:

docker run -d -p 8080:8080 my-java-ee-app

Dieser Befehl startet einen neuen Container basierend auf dem Image my-java-ee-app und ordnet den Port 8080 auf dem Host dem Port 8080 im Container zu.

Überprüfung der Bereitstellung

Um zu überprüfen, ob die Java EE-Anwendung im Docker-Container korrekt läuft, können Sie die folgenden Befehle verwenden:

## Liste der laufenden Container anzeigen

## Anzeigen der Logs des laufenden Containers

## Zugriff auf die Anwendung in einem Webbrowser

Der Befehl docker ps listet alle laufenden Container auf, einschließlich des Containers, der Ihre Java EE-Anwendung ausführt. Anschließend können Sie den Befehl docker logs verwenden, um die Anwendungs-Logs anzuzeigen und sicherzustellen, dass der Start korrekt durchgeführt wurde.

Schließlich können Sie auf die laufende Anwendung in einem Webbrowser zugreifen, indem Sie http://localhost:8080 aufrufen.

Skalierung der Anwendung

Ein wichtiger Vorteil der Ausführung einer Java EE-Anwendung in Docker ist die einfache Skalierbarkeit der Anwendung. Sie können mehrere Instanzen des Docker-Containers ausführen, um erhöhten Traffic oder Last zu bewältigen.

Zur Skalierung der Anwendung können Sie eine Container-Orchestrierungsplattform wie Docker Compose oder Kubernetes verwenden. Diese Tools ermöglichen es Ihnen, die gewünschte Anzahl von Container-Instanzen zu definieren und die Bereitstellung und Skalierung der Anwendung automatisch zu verwalten.

Hier ist ein Beispiel für eine Docker Compose-Datei, die eine skalierbare Bereitstellung der Java EE-Anwendung definiert:

version: "3"
services:
  app:
    image: my-java-ee-app
    ports:
      - 8080:8080
    deploy:
      replicas: 3
      update_config:
        parallelism: 2
        order: rolling-update

In diesem Beispiel gibt der Abschnitt deploy an, dass die Anwendung mit 3 Replikaten bereitgestellt werden soll und dass Updates mit einer Rolling-Update-Strategie durchgeführt werden sollen.

Zusammenfassung

Durch die Schritte in diesem Tutorial lernen Sie, den Startbefehl für eine Java EE-Anwendung in einem Docker-Container korrekt zu konfigurieren. Dieses Wissen hilft Ihnen, die Bereitstellung und Ausführung Ihrer Webanwendung reibungslos zu gestalten und die Vorteile und Flexibilität von Docker-Containern zu nutzen.