環境
- 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を探しにいくのかがよくわかっていません
その他参考にしたサイト