DockerでWildFlyを試す
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
に書かれたサーバーの認証情報を使ってくれるようです。
その場合、username
とpassword
は不要です。
デプロイができたら次のコマンドで動作確認してください。
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
実行するだけなので十分手軽ですが)。
以上です。
Discussion