DockerでWildFlyを試す

2 min読了の目安(約2300字TECH技術記事

WildFly公式イメージがDocker Hubで公開されているので、これを使ってWildFlyを試します。

起動

次のコマンドで起動できます。

docker run -d --name demo -p 8080:8080 -p 9990:9990 \
    jboss/wildfly /opt/jboss/wildfly/bin/standalone.sh \
    -b=0.0.0.0 -bmanagement=0.0.0.0

8080はアプリケーションを公開するポート、9990は管理コンソールのポートです。

スタンドアロンモードで起動しているので/opt/jboss/wildfly/bin/standalone.shを使用しています。
ドメインモードで起動するなら/opt/jboss/wildfly/bin/domain.shです。

起動オプションに-b=0.0.0.0を付けていますが、これがないとコンテナ外から接続できません(つまりhttp://localhost:8080で接続できない)。
-bmanagement=0.0.0.0も同様で、こちらは管理コンソール用のオプションです。

起動ができたら管理ユーザーを追加します。
次のコマンドでユーザー名がadmin、パスワードがsecretの管理ユーザーを追加できます。

docker exec demo /opt/jboss/wildfly/bin/add-user.sh admin secret --silent

管理ユーザーが追加できたら管理コンソールを開いてみてください。
URLはhttp://localhost:9990です。

アプリケーションをデプロイする

JAX-RSでhelloworldするだけのアプリケーションを用意したので、お手元にcloneして試してみてください。

wildfly-maven-pluginでデプロイする

wildfly-maven-pluginを使ってみましょう。

次のコマンドでデプロイできます。

mvn wildfly:deploy

プラグインの設定は次の通りです。

<plugin>
    <groupId>org.wildfly.plugins</groupId>
    <artifactId>wildfly-maven-plugin</artifactId>
    <version>2.0.2.Final</version>
    <configuration>
        <hostname>localhost</hostname>
        <port>9990</port>
        <username>admin</username>
        <password>secret</password>
        <name>ROOT.war</name>
    </configuration>
</plugin>

ちなみにidを使うとMavenのsettings.xmlに書かれたサーバーの認証情報を使ってくれるようです。
その場合、usernamepasswordは不要です。

デプロイができたら次のコマンドで動作確認してください。

curl http://localhost:8080/api/hello

動作確認が終わったら次のコマンドでアンデプロイしておいてください。

mvn wildfly:undeploy

jboss-cliでデプロイする

次はWARファイルをコンテナへ送ってからjboss-cliでデプロイしてみましょう。

まず次のコマンドでWARファイルをコンテナへ送ります(WARファイルはmvn packageで作っておいてください)。

docker cp target/demo-for-wildfly-0.1-SNAPSHOT.war demo:/tmp/

それから次のコマンドでデプロイします。

docker exec demo /opt/jboss/wildfly/bin/jboss-cli.sh --connect \
 --command="deploy /tmp/demo-for-wildfly-0.1-SNAPSHOT.war --name=ROOT.war"

デプロイができたら次のコマンドで動作確認してください。

curl http://localhost:8080/api/hello

こちらの方法もアンデプロイのコマンドを記載しておきます。

docker exec demo /opt/jboss/wildfly/bin/jboss-cli.sh --connect \
 --command="undeploy ROOT.war"

おわりに

Dockerを使ってお手軽にWildFlyを試せました(Docker使わなくてもダウンロードしてstandalone.sh実行するだけなので十分手軽ですが)。

以上です。