以前spring bootアプリをgcpのpaasの無料枠を使ってデプロイしていたが、メモリ不足やストレージを利用せざるを得なくなったりで有料枠に乗り換えたところ、かなり費用が膨らんでしまった。
そこで、無料枠で気軽に運用できるプラットフォームを求めて、今度はherokuに7,8年ぶりに戻ってみることにした。
今回はwindows。
まず、heroku-cliをインストール。
多要素認証(MFA)への切り替え。また、heroku loginもMFAで。
ここで地味に躓いたのが、メールアドレスとパスワードでは失敗する。一度ブラウザでログイン(してたら再度画面遷移させたりした上で heroku login
する。そうするとブラウザが立ち上がるようになり自動でログインされる。
基本的には公式のガイドにしたがう。
heroku create
git push heroku main
コンパイルエラー。デフォルトJava8とのことなので、おそらくそれが原因。
remote: * What went wrong:
remote: Execution failed for task ':compileJava'.
remote: > invalid source release: 11
これも説明どおりに対処
プロジェクトルートにsystem.properties
ファイルを作成し、下記行を追加しコミット。
java.runtime.version=11
再度、git push heroku main
して成功したと思いきや、
もうひとつエラー。
no main manifest attribute, in build/libs/sample-0.0.1-SNAPSHOT-plain.jar
単純にエラーログでググるとgradleでjarのMainClassを指定を追加する解決法がたくさんでてくるが、不正解。実行するjarが正しく指定できていないらしい。
これにはProcfile
というファイルを置くべきだったようで、ない場合herokuのログを見ると自動生成しているようだ。
Create a Procfile to customize the command used to run this process: https://devcenter.heroku.com/articles/procfile
herokuのgradleサンプルにもこれがおいてあった。
https://github.com/heroku/gradle-getting-started/blob/master/Procfile
というかSpring Bootの場合がここに書いてあった
https://devcenter.heroku.com/ja/articles/deploying-gradle-apps-on-heroku
(そもそも、これやらないと動かないのにSpring Bootをデプロイするガイドの方に書いておいてほしい)
そこで、Procfileを作成。下記も参考になった。
https://qiita.com/hiroki1994/items/9ce824efce5399870134
web: java -Dserver.port=$PORT $JAVA_OPTS -jar build/libs/xxxxxx-0.0.1-SNAPSHOT.jar
しかし、バージョン変えるたびにこの内容も変える必要があるので、あとで動的に生成するなどの検討をしたい。
コメント