Die Docker-Images der generierten Anwendung erstellen

Die Java-Programme: Entry und State

Der deterministische endliche Automat, auf dem die Anwendung basiert, wird unter anderem durch 2 Java-Programme repräsentiert.

  1. Das Entry-Programm stellt die REST-Schnittstelle für die Entgegennahme von Anfragen in Form von Eingabestrings zur Verfügung, die zur Verarbeitung an den DEA übergeben werden.

  2. Das State-Programm verarbeitet Schritt-für-Schritt die einzelnen Symbole des Eingabestrings. Dazu wird für jeden Zustand des DEA eine Instanz des State-Programms gestartet.

Wenn die generierte Anwendung mit Docker Compose oder Kubernetes ausgeführt werden soll, müssen Docker-Images für die beiden Java-Programme zur Verfügung stehen.

Erstellung der Docker-Images

Im Unterverzeichnis dockerbuild des Anwendungsprojektes befinden sich Dockerfiles zur Erzeugung der Docker-Images. Zum Aufruf des Build-Prozesses enthält das Unterverzeichnis außerdem eine CMD-Datei für die Eingabeaufforderung von Windows sowie eine SH-Datei für die Linux-Shell. Die Dateinamen basieren auf dem Anwendungsnamen, der bei der Generierung angegeben wurde:

dockerbuild-{anwendungsname}.cmd
dockerbuild-{anwendungsname}.sh

Öffnen Sie eine Konsole im Verzeichnis dockerbuild und rufen Sie die Script-Datei entsprechend Ihrem lokalen Betriebssystem auf, um den Build-Prozess zu starten.

Im Falle der Beispielanwendung für den Getränkeautomaten mit dem Namen BeverageVending lauten die Kommandos für die Erstellung der Docker-Images folgendermaßen:

dockerbuild> dockerbuild-beveragevending.cmd (1)

dockerbuild$ ./dockerbuild-beveragevending.sh (2)
  1. Für Windows.

  2. Für Linux.

Anmerkungen:

Die Images werden durch einen mehrstufigen Docker-Build-Prozess erzeugt, bei dem in der ersten Stufe ein Maven-Basis-Image verwendet wird, um die Programme direkt aus dem Java-Sourcecode zu erstellen, so dass weder Maven noch ein JDK auf dem lokalen System verfügbar sein muss.

Die erzeugten Images enthalten eine JRE (Java Runtime Environment) und das jeweilige Java-Programm.

Wenn Sie nach Abschluss des Build-Prozesses die vorhandenen Images mit dem Kommando docker image ls in der Konsole auflisten, sollte die Ausgabe im Fall der Beispielanwendung BeverageVending der folgenden ähneln:

dockerbuild> docker image ls -f "reference=*/beverage*" (1)
REPOSITORY                      TAG       IMAGE ID       CREATED          SIZE
samples/beveragevending-state   0.1.0     4ef446099fac   23 seconds ago   264MB  (2) (3)
samples/beveragevending-entry   0.1.0     b30509ccb209   28 seconds ago   266MB
  1. Die Option -f "reference=*/beverage*" beschränkt die Ausgabe auf Images, die beverage im Namen enthalten.

  2. Das Repository-Prefix (hier samples) entspricht dem Wert, der bei der Generierung angegeben wurde.

  3. Die Werte für IMAGE ID und CREATED hängen von den aktuellen lokalen Gegebenheiten ab.