Wenn wir Wildfly in einem Container betreiben wollen haben wir mehrere Möglichkeiten diesen für unsere Anforderungen zusammenzustellen. Zunächst stehen uns die Profile aus Jakarta EE bzw. die Microprofile zur Verfügung. Diese können wir für die Erstellung des Containers nutzen. Ich möchte euch in diesem Beitrag eine einfachere Möglichkeit vorstellen auf Basis einer Anwendung einen Wildfly zu provisionieren.
Über das Wildfly Maven Plugin können wir Glow benutzen um unsere Anwendung analysieren zu lassen. Es ermittelt welche Module vom Wildfly von unserer Anwendung benötigt werden.
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<version>5.1.1.Final</version>
<configuration>
<discover-provisioning-info>
<version>36.0.1.Final</version>
<context>cloud</context>
</discover-provisioning-info>
</configuration>
<executions>
<execution>
<goals>
<goal>package</goal>
</goals>
</execution>
</executions>
</plugin>
Bei der Ausführung des Plugins werden sowohl die Module, als auch mögliche notwendige Konfigurationen wie beispielsweise einer Datasource geprüft. Das Ergebnis ist ein auf das Minimum beschränkter Wildfly Server. Diesen legt das Plugin direkt in das Build-Verzeichnis ab und erstellt darüber hinaus eine entsprechende Provisionierungskonfiguration.
<?xml version='1.0' encoding='UTF-8'?>
<installation xmlns="urn:jboss:galleon:provisioning:3.0">
<feature-pack location="org.wildfly:wildfly-galleon-pack:36.0.1.Final">
<default-configs inherit="false"/>
<packages inherit="false"/>
</feature-pack>
<feature-pack location="org.wildfly.cloud:wildfly-cloud-galleon-pack:8.0.0.Final">
<default-configs inherit="false"/>
<packages inherit="false"/>
</feature-pack>
<config model="standalone" name="standalone.xml">
<layers>
<include name="ee-core-profile-server"/>
<include name="jaxrs"/>
<include name="jpa"/>
</layers>
</config>
<options>
<option name="jboss-fork-embedded" value="true"/>
<option name="optional-packages" value="passive+"/>
</options>
</installation>
Diese kann nun mit Wildfly Galleon verwendet werden, um direkt in einem Container per Multi-Stage-Build das Image zu erstellen.