GlassFishのforkプロジェクトであるPayaraのDockerイメージがDocker Hubに上がっていたので使ってみました。Dockerと相性の良さそうなPayara Microを試してみます。
Dockerfileを見ると、 Payara MicroのjarとデモアプリとしてPrimeFacesのショーケースのwarをダウンロードとして、後はよろしくって感じですね。まずはデモ用途という感じに見えます。
とりあえず、試してみましょう。なぜかlatestがないので、タグを指定します。
Dockerfile
にCMD
もENTRYPOINT
も書いてないので、-it
をつけて/bin/bash
を実行し、中に入ってみます。
$ docker run --rm -it -p 8080:8080 payaradocker/payara-micro:4.1.152.1.micro.oraclejdk8 /bin/bash
payara@5874b64d962d:/opt$
中に入りました。
payara@5874b64d962d:/opt$ ls
payara payara-micro-4.1.152.1.jar showcase-5.2.war
作業ディレクトリにはpayaraのjarとデモのwarがあります。
payara@5874b64d962d:/opt$ java -jar payara-micro-4.1.152.1.jar --deploy showcase-5.2.war
でPayaraが起動しました。http://[Docker Host]:8080/showcase-5.2
にアクセスするとPrimeFacesのショーケースにアクセスできます。
通常、Dockerコンテナ内で作業はしないので、ワンライナーで実行するなら、
$ docker run --rm -it -p 8080:8080 payaradocker/payara-micro:4.1.152.1.micro.oraclejdk8 java -jar payara-micro-4.1.152.1.jar --deploy showcase-5.2.war
ですね。バックグラウンドで実行するなら、
$ docker run -d -p 8080:8080 payaradocker/payara-micro:4.1.152.1.micro.oraclejdk8 java -jar payara-micro-4.1.152.1.jar --deploy showcase-5.2.war
で。
この例だけだと、showcase-5.2.warしか試せない!ので、ローカルに実行させたいwarを置いて、ローカルディレクトリをDockerコンテナのマウントさせてみます。
例として、showcase-5.0.warをローカルをダウンロードして、これをDocker上のPayara Microで実行してみます。
$ cd ~/docker
$ wget http://repository.primefaces.org/org/primefaces/showcase/5.0/showcase-5.0.war
$ docker run --rm -it -p 8080:8080 -v ~/docker/:/tmp payaradocker/payara-micro:4.1.152.1.micro.oraclejdk8 java -jar payara-micro-4.1.152.1.jar --deploy /tmp/showcase-5.0.war
できた。http://[Docker Host]:8080/showcase-5.0
にアクセスできます。
-v
がポイントです。
これで、Dockerで簡単にwarを実行できますね。
ポータビリティーの観点でPayara(というかJava EEサーバー)がどうあるべきは検討の余地がありますが、 PayaraのこのDockerイメージはParayaをちょっと試したいときに便利。
Hazelcastのクラスタも試してみたい。