第9章 アプリケーションのパッケージング
本セクションでは、デプロイメントおよび実行用に Thorntail ベースのアプリケーションをパッケージ化する方法について説明します。
9.1. パッケージタイプ
Thorntail を使用する場合は、使用する方法やデプロイ方法に応じて、ランタイムとアプリケーションをパッケージ化する方法は複数あります。
9.1.1. UberJar
uberjar は、アプリケーションを実行するために必要なものをすべて含む単一の Java .jar
ファイルです。つまり、選択したランタイムコンポーネントの両方が、アプリケーションサーバーとしてアプリケーションコンポーネント( .war
ファイル)と理解することができます。
uberjar は、単一の実行可能なバイナリーアーティファクトを生成して、組織内のテスト、検証、および実稼働環境を通過する多くの継続的インテグレーション/継続的デプロイメント(CI/CD)パイプラインスタイルに役立ちます。
Thorntail が生成する uberjar の名前には、アプリケーションの名前と -thorntail.jar
接尾辞が含まれます。
uberjar は、実行可能な JAR のように実行できます。
$ java -jar myapp-thorntail.jar
9.1.2. hollow JAR
hollow JAR は uberjar と似ていますが、ランタイムコンポーネントのみが含まれるため、アプリケーションコードは含まれません。
hollow jar は、Docker などの Linux コンテナーを含むデプロイメントプロセスに適しています。コンテナーを使用する場合、イメージ階層下でコンテナーイメージにランタイムコンポーネントを配置します。つまり、アプリケーションコードのみが含まれる上位層がより速く再ビルドされる可能性が低くなります。
Thorntail が生成する hollow JAR の名前にはアプリケーションの名前、-hollow-thorntail.jar
接尾辞が含まれます。hollow JAR を利用するには、アプリケーションの .war
ファイルを別々にパッケージ化する必要があります。
hollow JAR の使用にはいくつかの制限があります。
Thorntail が JDBC ドライバーを自動検出できるようにするには、ドライバーを使用する JAR を
thorntail.classpath
システムプロパティーに追加する必要があります。以下に例を示します。$ java -Dthorntail.classpath=./h2-1.4.196.jar -jar my-hollow-thorntail.jar myApp.war
アプリケーションの YAML 設定ファイルは自動的に適用されません。手動で指定する必要があります。以下に例を示します。
$ java -jar my-hollow-thorntail.jar myApp.war -s ./project-defaults.yml
hollow JAR を実行する場合は、アプリケーションの .war
ファイルを Java バイナリーの引数として指定します。
$ java -jar myapp-hollow-thorntail.jar myapp.war
9.1.2.1. pre-Built Hollow JAR
Thorntail には、以下の事前にビルドされた hollow JAR が同梱されます。
- web
- Web テクノロジーに重点を置いた機能
- microprofile
- すべての Eclipse MicroProfile 仕様で定義される機能
hollow JAR は以下のコーディネートで利用できます。
<dependency> <groupId>io.thorntail.servers</groupId> <artifactId>[web|microprofile]</artifactId> </dependency>