SpringBootで作成したExecutableJARをgcloud app deploy できない

環境

  • AppEngine Standard 第2世代
  • Java11
  • SpringBoot 2.2.1

問題

  • ./mvnw package で生成のExecutableJARを gcloud app deploy しようとすると、以下のようにコマンドの実行に失敗する
  • JARファイルのルックアップに失敗している様子??
$ gcloud app deploy
(略)
╔════════════════════════════════════════════════════════════╗
╠═ Uploading 111 files to Google Cloud Storage              ═╣
╚════════════════════════════════════════════════════════════╝
File upload done.
Updating service [default]...failed.                                                                                                                                  
ERROR: (gcloud.app.deploy) Error Response: [9] Cloud build XXXX-XXXX-XXXX-XXXX-XXXXXXXX status: FAILURE
Error ID: 838926df
Error type: UNKNOWN
Error message: did not find any jar files with a Main-Class manifest entry
Full build logs: https://console.cloud.google.com/cloud-build/builds/XXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXX?project=XXXXXXXXXXXXXXXX

対処

  • Executable JARの相対パスentrypoint: として指定する内容の app.yaml を追加したら、エラーがでなくなりました。 gcloud app deploy の実行も成功しました
$ cat app.yaml 
runtime: java11
entrypoint: java -Xmx64m -jar target/myapp-0.0.1-SNAPSHOT.jar

原因

  • 以下に記載の Alternatively, App Engine will use the contents of the optional entrypoint field in your app.yaml file. の手順を実行した形ですが、なぜこれが必要なのか理解できていません。またちゃんと調べようと思います。
    • デフォルトだと、どのようなルールに従いJARを探しにいくのかがよくわかっていません

その他参考にしたサイト

/* https://sunrise033.com/entry/hatena-blog-how-to-hierarchicalize-categories */