Software Engineering

Oracle on Docker: Einstieg WebLogic Domain

Nachdem wir uns in meinem vorherigen Blockpost ein wenig mit den allgemeinen und spezifischen Problemchen von aktuellen „Oracle on Docker“ Repositories beschäftigt haben, will ich dieses Mal etwas tiefer in die eigentliche Materie einsteigen.

Im Folgenden werde ich erklären wie man eine WebLogic Domain Konfiguration mit dem WebLogic Scripting Tool (WLST), Python und ein wenig Shell Script automatisiert und durch die Docker Engine als Container anbietet. In einem weiteren Teil werden, ausgehend von der WebLogic Domain, dann verschiedene Managed Server auf separaten Maschinen erstellt, welche sich mit der Domain verlinken. Ausgangspunkt ist die WebLogic on Docker Installation aus Bruno Borges‘ GitHub Repository.

Vorbedingungen

Um die hier beschriebenen Skripte erfolgreich ausführen, wird ein Docker Image mit bereits installiertem WebLogic 12c benötigt. Idealerweise sollte hierfür die von Bruno Borges erstellte Lösung genommen und dort der WebLogic 12c in der Generic Version (Installation mit „-g“) verwendet werden. Grund hierfür ist, dass viele der Pfade im Skript auf die von ihm verwendeten Installationspfade für den WebLogic 12c verweisen. Wenn ihr einen eigenen WebLogic Container verwendet, müsst ihr diesen entsprechend angepassen.

Des weiteren werden folgende Dateien aus dem Ordner „samples/12c-domain/container-scripts“ aus Bruno Borges GitHub Repository benötigt:

  • commEnv.sh
  • jaxrs2-template.jar

Erstellen einer Konfigurationsdatei

Um die Konfiguration der WebLogic Domain so dynamisch wie möglich zu halten, ist es ratsam erstmal ein Tool zu schaffen, welches es einem ermöglicht die spezifische Konfiguration der Domain bei Bedarf einfach zu ändern.

Das Skript zur Erstellung der Konfigurationsdatei ist in Python geschrieben. Natürlich eignet sich dafür aber auch jegliche andere, aus der Konsole aufrufbare, Skriptsprache. Vorstellbar wäre sogar ein Java-Programm, welche dem ganzen noch eine nette grafische Oberfläche in Form eines Wizards hinzufügt. Für diesen Testfall wird dies aber erstmal genügen.

In diesem Skript wird der Benutzer aufgefordert, dem System seine gewünschten Konfigurationen mittels Ja/Nein – oder direkter Texteingabe zu übermitteln. Anzumerken ist, dass hierbei die Passwörter in der erstellten Konfigurationsdatei als Klartext gespeichert werden. Wenn man dieses Skript also produktiv verwenden möchte, sollte man Verschlüsselungsalgorythmen einsetzen, um die Datei entsprechend zu sichern.

WebLogic Domain und AdminServer mit WLST

Als nächstes brauchen wir ein Skript, welches die von uns erstellte Konfiguration, als Grundlage zur Erstellung einer neuen Domain, nimmt.

Dieses Skript wird später im Docker Container laufen und benötigt die Konfigurationsdatei im selben Ordner, wie das Skript selbst. Dafür wird in einem späteren Schritt Sorge getragen.

Ausgeben von AdminServer Port aus Konfigurationsdatei

Da wir zum Erstellen des Docker Containers den Port des AdminServers benötigen, brauchen wir ein Skript, dass uns dieses in der Console ausgibt.

Erstellen eines dynamischen Dockerfiles

Ein Dockerfile in seinem natürlichen Lebensraum ist ein sehr undynamisches Wesen. Wenn wir unsere Domains mittels verschiedenen Konfigurationen erstellen wollen, brauchen wir also einen Mechanismus um Dockerfiles automatisiert unseren Einstellungen anzupassen.

Ausführendes Skript

Nun haben wir alle notwendigen Skripte beisammen, um zumindest eine einfache WebLogic Server Domain + AdminServer zu erstellen. Alles was uns jetzt noch fehlt ist ein ausführendes Element, damit wir nicht jedes mal alle Skripte einzeln eingeben müssen.

Ordnerstruktur

Damit die Skripte die verwendeten Dateien korrekt in die Docker Umgebung kopieren können, müssen die einzeln Dateien wie folgt angeordnet werden:

[…]/buildDomain.sh

[…]/createConfigurationFile.py

[…]/create-WLS-Dockerfile.py

[…]/print-admin-port.py

[…]/wls-container-scripts/create-wls-domain.py

[…]/wls-container-scripts/commEnv.sh

[…]/wls-container-scripts/jaxrs2-template.jar

Skript ausführen

Nachdem alle Dateien erstellt sind und in die richtige Struktur gebracht wurden, kann der Build über „sh buildDomain.sh -c“ gestartet werden.

Dies ruft die Konfigurationserstellung auf und baut anschließend aus der verwendeten Konfiguration das Dockerfile. Danach wird mittels Dockerfile ein Image der WebLogic Domain erstellt und anschließend ein Container gestartet, auf dem der laufende WebLogic Server aufgerufen werden kann.

Achtet am Ende auf die Konsolen Ausgabe, da dort die URL ausgegeben wird, unter der ihr eure Domain erreichen könnt.

Konsolenausgabe WLS Adresse

Stay tuned!

Im nächsten Teil des Oracle on Docker – WebLogic Domain Blocks werden wir die Skripte um eine weitere Funktion erweitern. Die in der Konfiguration angegebenen ManagedServer und Maschinen sollen in separaten Containern erstellt und mit der Domain verlinkt werden.