「PayaraをDockerで動かす」で紹介されているやり方でも起動できますが、Dockerイメージの中にアプリも入れてしまいたい!なるべくGlassFishと同じ感じで起動できるようにしたい!という場合に。
参考:
ADAM BIEN'S WEBLOG - PAYARA MICRO AND DOCKER
http://www.adam-bien.com/roller/abien/entry/payara_micro_and_docker
リンク先のビデオでは、Payaraの公式イメージを使わずに作成する方法が解説されています。Payaraの公式イメージには、ビデオで解説されている内容の内の半分ぐらいが実装されています。
以下、ローカルホスト (boot2dockerやDockerMachine) の/path/to/war/
にあるWAR_TO_DEPLOY.war
をデプロイしてpayaraを起動する場合を例にとり、説明します。
Dockerfileの記述
FROM payara/micro
ADD "/path/to/war/WAR_TO_DEPLOY.war" "/tmp/"
ENTRYPOINT java -jar ${PKG_FILE_NAME} --deploy "/tmp/WAR_TO_DEPLOY.war"
warファイルをDockerコンテナの/tmp
に格納し、そこからデプロイして実行するようにしています。/tmp
でなくても構いません。変数等は、ここに書かれている通りに記述すれば良いです。
ビルド・Webサーバの起動
$ docker build -t イメージ名 .
$ docker run --name コンテナ名 -p 8080:8080 -p 4848:4848 -p 8009:8009 -p 8181:8181 -d イメージ名
payara/micro
でEXPOSEされている全てのポートをフォワードする場合の記述です。実際には、自分が使う予定のあるポートだけ指定すれば十分です。
Webアプリにアクセス
http://localhost:8080/WAR_TO_DEPLOY
にアクセスします。
(localhost
の部分は、適宜boot2dockerやDockerMachineのアドレスに読み替えてください)
Payara Microドメインに設定を追加(オプション)
コネクションプールを作っておきたい場合など、ドメインに設定を追加する必要がある場合は、次の手順も必要です。
参考:
How do I add JDBC drivers and configure JDBC Resources in Payara Micro?
http://stackoverflow.com/questions/32899120/how-do-i-add-jdbc-drivers-and-configure-jdbc-resources-in-payara-micro
microdomain.xmlの取得と編集
Payaraのリポジトリにあるmicrodomain.xmlをダウンロードします。Payara Micro向けのdomain.xmlのようなものです。domain.xmlを編集するような感じでmicrodomain.xmlを編集して、保存します。
PayaraやGlassFishの管理コンソールで一通り設定を作ってから、domain.xmlを開いて差分を見ると、追加すべき内容と場所が簡単に確認できます。
Dockerfileの修正
payara起動時に--domainConfig
オプションでmicrodomain.xmlを参照させるようにします。
FROM payara/micro
ADD "/path/to/war/WAR_TO_DEPLOY.war" "/tmp/"
ADD "/path/to/resource/microdomain.xml" "/etc/opt/"
ENTRYPOINT java -jar ${PKG_FILE_NAME} --deploy "/tmp/WAR_TO_DEPLOY.war" --domainConfig "/etc/opt/microdomain.xml"
稼働中に、
Exception while persisting domain.xml, changes will not be available on server restart.
というメッセージが出てくることがありますが、特に心配することはありません。Payara「Micro」を再起動するというシチュエーションは、ほぼ無いはずですので…