Oracle WebLogic Server 14c: Docker-Images erstellen

titelbild-oracle-docker

In diesem Artikel möchte ich zeigen, wie schnell und einfach Docker-Images von einer WebLogic-Domäne erstellt werden können. Damit kann entweder eine Testumgebung erstellt werden, oder das Image kann als Basis für einen WebLogic-Cluster in Kubernetes verwendet werden.

Vorbereitung

Um ein Docker-Image mit einer WebLogic Domäne zu erstellen, klone ich mir als erstes eine lokale Kopie des Imagetools von Oracle in mein Arbeitsverzeichnis. Danach lade ich mir noch den WebLogic Server 14c Slim-Installer und die Installationsdatei für das Oracle Java Development Kit 11 herunter. Mit diesen Komponenten kann ich bereits ein Image mit einer WebLogic Instanz erstellen. Um diesem eine Domäne hinzuzufügen, kann entweder das WebLogic Scripting Tool oder das WebLogic Deploy Tooling verwendet werden. Da letzteres einfacher ist und auch integriert mit dem Imagetool verwendet werden kann, benutze ich dieses. Hierzu lade ich aus dem Tab Releases das aktuelle Zip-Archiv des WebLogic Deploy Tooling herunter.

Erstellung des Instanz-Images

Um das Imagetool benutzen zu können, muss ich es als erstes aktivieren. Dazu führe ich den folgenden Befehl in meinem Arbeitsverzeichnis aus.

$ source imagetool/bin/setup.sh 

Jetzt kann ich das Imagetool bequem über seinen Namen aufrufen. Um das Instanz-Image erstellen zu können, muss ich zunächst die Installationsdateien für das Java Development Kit (JDK) und den WebLogic Server in den Cache des Imagetools laden. Dazu muss diesem der Typ der Installationsdatei, also ob sie für WebLogic oder für die JDK ist, mit --type übergeben werden. Zusätzlich benötigt der Cache noch Informationen über die Version des Paketes mit --version und den absoluten Pfad zur Installationsdatei über --path.

$ imagetool cache addInstaller --type jdk --version 11.0.9 --path /home/oracle/jdk-11.0.9_linux-x64_bin.tar.gz
$ imagetool cache addInstaller --type wls --version 14.1.1.0.0 --path /home/oracle/fmw_14.1.1.0.0_wls.jar 

Nachdem diese Dateien im Cache bereit stehen, kann ich diese zu einem Image zusammenfügen. Hätte ich mehrere Versionen des WebLogic Servers oder des Java Development Kits in den Cache geladen, könnte ich diese im nächsten Schritt beliebig miteinander kombinieren. Ich werde aber nur die oben geladenen Dateien verwenden. Dazu muss mit --version die gewünschte WebLogic-Version und mit --jdkVersion die gewünschte Java-Version aus dem vorherigen Schritt angegeben werden. Mit dem Parameter --tag wird noch die spätere Dockerbezeichnung festgelegt.

$ imagetool create --version=14.1.1.0.0 --jdkVersion=11.0.9 --tag wls:14.1.1.0.0-jdk11
 

Jetzt arbeitet das Imagetool und erstellt das Docker-Image mit den gewünschten Softwareversionen. Dieses Image kann jetzt in weiteren Schritten verfeinert werden.

Erstellen eines Instanz-Images mit Domäne

Um dem gerade erstellten Image eine Domäne hinzufügen zu können, muss ich das vorher heruntergeladene WebLogic Deploy Tooling in den Cache des Imagetools laden. Hierzu muss ich auch über den Parameter --type angeben, dass es ein WebLogic Deploy Tooling ist. Zudem geben die Parameter --version und --path wieder die Version und den absoluten Pfad des Pakets an.

$ imagetool cache addInstaller --type wdt --version 1.9.7 --path /home/oracle/weblogic-deploy.zip
 

Um eine Domäne erstellen zu können, benötige ich noch eine Vorlage, welche dem Deploy Tooling mitteilt, wie meine Domäne aussehen soll. Ich nehme dazu die Domäne aus einem vorherigen Artikel zu Erstellung eines WebLogic 14c Servers als Basis. Daher sieht meine Vorlage wie folgt aus:

/home/oracle/base_domain.yaml

domainInfo:
    AdminUserName: 'weblogic'
    AdminPassword: 'welcome1'
topology:
    Name: base_domain
    DomainVersion: 14.1.1.0.0
    NMProperties:
        JavaHome: '/usr/lib/jvm/java-11-jdk'
        weblogic.StartScriptName: startWebLogic.sh
    Cluster:
        cluster_1:
            HealthCheckPeriodsUntilFencing: 6
    Server:
        AdminServer:
        managed_server_1:
            Cluster: cluster_1
            ListenPort: 7003
        managed_server_2:
            Cluster: cluster_1
            ListenPort: 7004
    MigratableTarget:
        managed_server_1 (migratable):
            UserPreferredServer: managed_server_1
            Cluster: cluster_1
            MigrationPolicy: manual
        managed_server_2 (migratable):
            UserPreferredServer: managed_server_2
            Cluster: cluster_1
            MigrationPolicy: manual 

Mit Hilfe dieser Vorlage wird die neue Domäne auf dem Docker-Image nachgebaut. Dazu muss das Imagetool ein komplett neues Image erstellen. Mit dem Parameter --fromImage gebe ich mein zuvor erstelltes Instanz-Image an. Diesem soll die Domäne hinzugefügt werden. Mit --tag gebe ich auch hier den Namen und die Version an, welche in Docker angezeigt werden. Mit --version muss ich noch einmal die WebLogic-Version angeben, welche von der WebLogic-Deploy-Tooling-Version nach --wdtVersion gefolgt wird. Mit --wdtModel gebe ich meine Vorlagendatei an und mit --wdtDomainHome lege ich schlussendlich den Speicherort der Domäne im Image fest.

$ imagetool create --fromImage wls:14.1.1.0.0-jdk11 --tag wls-domain:14.1.1.0.0-jdk11  --version 14.1.1.0.0  --wdtVersion 1.9.7 --wdtModel /home/oracle/base_domain.yaml --wdtDomainHome /u01/domains/base_domain
 

Nach kurzer Zeit ist auch dieses Image fertig, und ich kann es mit Docker verwenden. Wenn ich es starte, ist kein Unterschied zu einer konventionellen WebLogic-Instanz zu merken. Jedoch werden Änderungen in der Konfiguration bei einem Neustart des Containers nicht übernommen. Dazu müssten die Konfigurationsdaten außerhalb des Images gelagert werden. Sollen aber nur bestimmte Anwendungen bereitgestellt werden, können diese auch über das WebLogic Deploy Tooling bei Erstellung des Images installiert werden. Diese sind dann auch nach Neustarts noch vorhanden.

Fazit

In diesem Artikel habe ich gezeigt, wie ich mit dem WebLogic Imagetool und dem WebLogic Deploy Tooling schnell und unkompliziert ein Instanz-Image und ein Image mit Domäne für Docker erstellen kann. Diese Schritte lassen sich übrigens auch mit verschiedenen Versionen von Oracle WebLogic Server und Oracle Java durchführen, sofern diese Kombinationen kompatibel sind.

By accepting you will be accessing a service provided by a third-party external to https://blog.ordix.de/