きり丸の技術日記

技術検証したり、資格等をここに残していきます。

GitHubに登録しているJavaアプリをHerokuにアップロードする

きり丸アドベントカレンダー2020の5記事目です。


Herokuを初めて使ってみました。なんだかんだ、デプロイ設定が面倒くさいだろうと使っていませんでしたが、アドベントカレンダーで使用するいい機会だと思って素振りしました。

いろんな設定を自動でやってくれているので非常に便利でした。

ゴール

  • Herokuにアプリをデプロイする
  • Javaアプリを公開する
  • PostgreSQLを用意する

手順

Heroku用の設定ファイルを準備する


system.propertiesがHerokuの設定ファイルになります。

HerokuはJavaのデフォルトバージョンが8ですので、こちらで明示的に設定する必要があります。マイナーバージョンを指定することはできなかったので、とりあえず15を指定するといいでしょう。

JDKにzuluを指定することもできそうでしたが、正直JDKに強いこだわりはないので私はこのままにしておきます。

java.runtime.version=15

Herokuアカウントを作成する


Herokuアカウントを準備します。下記ページから登録してください。

https://id.heroku.com/login

Heroku上にアプリケーションを登録


ログイン後、「New」ボタンをクリックし、表示された「Create new App」ボタンをクリックしてください。

f:id:nainaistar:20201122230647p:plain

または、下記URLにアクセスしてください。

https://dashboard.heroku.com/new-app

「App name」に、一意になるような名前を付けてください。私の場合は「kirimaru-todoapp」という名前を付けました。ハンドルネーム+日付であればほぼ確実に一意になると思います。

f:id:nainaistar:20201122230657p:plain

HerokuのPostgreSQLを準備


下記URLにアクセスして、右側にある「Install Heroku Postgres」をクリックしてください。

https://elements.heroku.com/addons/heroku-postgresql

いったん、「Add-on plan」は「Hobby Dev - Free」でいいでしょう。物足りなくなった時に、アップグレードしましょう。「App to provision to」は先ほど付与したアプリケーション名を入力します。私は「kirimaru-todoapp」です。

f:id:nainaistar:20201122230717p:plain

f:id:nainaistar:20201122230729p:plain

入力後は、「Submit Order Form」を入力して登録してください。

Herokuの自動Deploy設定する


ヘッダの「Deploy」をクリックすると画面遷移します。

「Deployment Method」に、GitHubを選択してください。「App Connected to GitHub」には、自分が登録しているGitHubリポジトリを選択してください。

f:id:nainaistar:20201122230750p:plain

「Automatic deploys」はリリースしたいブランチを選択して、「Enable Automatic Deploys」をクリックしてください。別ブランチを使う理由もないので、「master」のままでいいでしょう。

f:id:nainaistar:20201122230806p:plain f:id:nainaistar:20201122230827p:plain

これで、GitHubへのPushをすると自動でデプロイが走ます。


Manual Deployも実行して動作確認してください。手動デプロイに失敗するのであれば、自動化しても当然失敗するので。

もしうまく動いていなかった場合

画面右上の「More」の「View logs」を確認してください。すべてのログではありませんが、最新ログ数行が表示されています。ログ画面を表示している状態でデプロイしたらすべてのログが表示されることになりますので、再デプロイして頑張って原因をみつけてください。

f:id:nainaistar:20201122230850p:plain

自動Deployを確認する


適当にGitをPushして確認してください。

正しく設定されていれば、ヘッダの「Overview」をクリックして表示される画面にイベントが表示されています。

f:id:nainaistar:20201122230909p:plain

デプロイされた結果ページ

きり丸のHerokuは次のURLにアクセスすれば表示されています。

https://kirimaru-todoapp.herokuapp.com/

ソースコード

アドベントカレンダー5日目。
github.com

終わりに

これで常に最新Verを公開している状態になるので、人に見せることができるようになりました。

まだ中身を作りこんでないので、公開する意味がないと思うかもしれません。しかし、HerokuがJava 15に対応していないかもしれない、PostgreSQLが使えないかもしれない、ということが最後に判明して後々修正する方がたいへんです。

今回、ミニマムに動作確認を行ったことで、本番とローカルで別々にDB設定を行う必要がないことに気付けました。Javaのデプロイ対象も特に指定する必要もありませんでした。これもひとつの工数削減です。

ここまで設定すれば、あとはJavaを作りこんでいくだけです!


この記事がお役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。

参考記事

Heroku公式開発ドキュメント devcenter.heroku.com

類似記事

きり丸アドベントカレンダー2020 adventar.org

6日目のアドベントカレンダーの記事:ToDo

f:id:nainaistar:20201122230627p:plain