WAR デプロイ
最終更新日 2024年05月07日(火)
Heroku では、Git デプロイ (リモートでの WAR ファイルのパッケージ化) および Heroku Maven プラグイン (ローカルでの WAR ファイルのパッケージ化) による WAR ファイルのデプロイがサポートされています。どちらの方式もデフォルトサーバーは Tomcat 9 ですが、プラットフォームは Webapp Runner などの任意のブート可能または内蔵可能なサーブレットコンテナを代わりに使用する柔軟性を備えています。
この記事では WAR ファイルの 2 つのデプロイ方式についての概要を示し、これらの間のトレードオフについて説明します。
Heroku Maven プラグインによるデプロイ
Heroku Maven プラグインで WAR ファイルをデプロイすると、デプロイプロセスを既存の Maven プロセスに統合することができます。Heroku プラグインは mvn package
フェーズによって生成されたアーティファクトを使用し、これらをビルドして、Heroku サーバーにアップロードされる slug ファイルを生成します。
この方法により、Heroku Maven プラグインはプロジェクトをリモートで再コンパイルするオーバーヘッドを回避します。この方法は多くの場合、WAR ファイルがすでにビルド済みでテストが実施されている CI サーバーからデプロイするときにお勧めするアプローチです。
Heroku CLI によるデプロイ
Heroku Java CLI プラグインはローカル WAR ファイルを Heroku にデプロイし、Tomcat Webapp-Runner を使用してこれを実行します。プラグインは次のコマンドでインストールまたは更新できます。
$ heroku plugins:install java
Java ランタイムがローカルにインストールされている限り、次のコマンドでデプロイできます。
$ heroku war:deploy <path_to_war_file> --app <app_name>
CLI プラグインは Heroku Maven プラグインと同じ基盤コードを使用しますが、Maven 統合は行いません。その結果、多くの同じ設定オプションをサポートしますが、メカニズムは異なります。このツールのカスタマイズ方法については、「Heroku CLI を使用した、WAR デプロイの設定」を参照してください。
Webapp Runner による Git デプロイ
Git リポジトリへのプッシュによる WAR ファイルのデプロイは、Heroku を開始するための簡単な方法です。また、これには開発/本番パリティを確保する利点もあります。ただし、Git デプロイのコンパイルフェーズでは Maven のゴールが実行されるため、他のデプロイ方式よりも処理が遅くなります。
詳細については、Deploying Tomcat-based Java Web Applications with Webapp Runner (Tomcat ベースの Java Web アプリケーションの Webapp Runner によるデプロイ) に関する記事を参照してください。Gradle を使用している場合、Deploy WAR files with Gradle (Gradle による WAR ファイルのデプロイ) を参照してください。
非推奨のツール
WAR ファイルをデプロイするために使用されていた以前のいくつかの Heroku ツールも動作する場合がありますが、アクティブに開発されていません。これらには、次のものが含まれます。
これらは引き続き動作する場合もありますが、この記事に記載されているいずれかの他の手法にアップグレードすることを強くお勧めします。