使用Docker WildFly和wildfly-maven-plugin实现Java应用容器化


假设你已经有了一个war包,使用WildFly Docker镜像来创建应用镜像:
将以下内容加入一个新 Dockerfile 映像

FROM quay.io/wildfly/wildfly
ADD target/microprofile-config.war /opt/jboss/wildfly/standalone/deployments/

运行:
docker build -t wildlfy-app .

在这种新架构下,WildFly的供应(提供下载和创建适合应用要求的WildFly发行版的能力)由Maven插件org.wildfly.plugins:wildfly-maven-plugin处理。

我们可以将其添加到应用程序的pom.xml的<build>部分,以便在Maven执行软件包目标时提供WildFly。

<plugin>
  <groupId>org.wildfly.plugins</groupId>
  <artifactId>wildfly-maven-plugin</artifactId>
  <version>4.0.0.Beta2</version>
  <configuration>
    <feature-packs>
      <feature-pack>
        <location>org.wildfly:wildfly-galleon-pack:26.1.1.Final</location>
      </feature-pack>
    </feature-packs>
  </configuration>
  <executions>
    <execution>
      <goals>
        <goal>package</goal>
      </goals>
    </execution>
  </executions>
</plugin>

如果我们再次运行mvn clean package,wildfly-maven-plugin将使用其功能包配置WildFly。
一旦maven完成,将有一个包含WildFly和应用程序部署的目标/服务器目录。

你可以直接从./target/server/bin/standalone.sh目录中运行WildFly,其中部署有应用程序。
应用程序的pom.xml控制着应用程序的全部运行时间。你不再需要安装WildFly,创建部署并在WildFly中部署。相反,WildFly的安装和部署是作为Maven构建过程的一部分完成的。你可以把pom.xml看作是应用程序的中心点,它由WildFly运行时和部署档案组成。

如果你想创建一个应用程序镜像,你可以改变Dockerfile以使用这个运行时镜像,并将target/server加入其中。

FROM quay.io/wildfly/wildfly-runtime-jdk11
COPY --chown=jboss:root target/server $JBOSS_HOME
RUN chmod -R ug+rwX $JBOSS_HOME


源码:GitHub repository.