【Spring Boot】【Heroku】Spring BootのWebアプリケーションを作成してHerokuにアップするまで
Spring Bootを使って作成したJavaのWebアプリケーションを、Herokuを使ってクラウド上にアップするまで手順についてのメモです。
今回はGitHubと連携する方法を紹介。
PCの環境はWindows10、DBはPostgreSQLを使用していることを想定。
必要なアカウント
Heroku
無料で利用できるクラウドサービス(PaaS)。
様々なプログラミング言語やフレームワークに対応したWebアプリケーションをデプロイすることができるプラットフォーム。
GitHubと連携できる。
それぞれアカウントがない場合は事前に作成しておく。
必要なツール
Heroku CLI
Herokuをコマンドプロンプトなどを使ってコマンドで操作できるツール。
HerokuDevCenterのサイトからダウンロードして指示に従ってインストール。
インストールしたら、binフォルダのパスを環境変数Pathに追加。
デフォルトだと「C:\Program Files\heroku\bin」あたり。PostgreSQL
オープンソースのデータベース。
Heroku上で無料で利用できるデータベースがPostgreSQLなので、コマンドからHeroku上のDBを操作できるようにローカルにもPostgreSQLをインストールしておく。
公式サイトからインストーラをダウンロードしてインストール。
バージョンは最新のやつなら問題ないかと。
インストールしたらbinのフォルダを環境変数Pathに追加。
デフォルトだと「C:\Program Files\PostgreSQL\<バージョン>\bin」あたり。Spring Bootの開発環境
Spring BootはJavaでWebアプリケーションを作成するためのフレームワーク。
何でもよいけれど、EclipseのFull Editionとか、STSとかで開発可能。
Eclipseが楽かと。
手順
GitHubにSpringBootアプリケーションのソースコードをプッシュ
リポジトリを作成して作成したアプリをプッシュする。
最初からGitHubでソースコード管理しながら作成したほうが良いかもね。Herokuアプリケーションの作成
Herokuにログインしてダッシュボードの画面から新しいアプリケーションを作成。
アプリケーション名は任意。
Heroku CLIでもできる。お好きな方で。
アプリ名は既に誰かに作成されていた場合は重複して作成できないので注意。HerokuアプリケーションにHeroku Postgresを追加
アプリケーションの管理画面のResoucesタブを表示。
Add-onsでHeroku Postgres を検索して追加する。DBの設定 ローカルにHeroku CLI と PostgreSQLがインストールされてて環境設定ができていればコマンドから
heroku pg:psql -a <アプリ名>
で接続可能。
テーブルなどを事前に作成しておく必要がある場合はSQL文を流して作成しておく。
SpringBootアプリ側の設定追加
Spring Bootのアプリケーションに、Herokuでデプロイして動作するための設定を追加する。
- Procfileを追加
Webアプリのフォルダ直下(POM.xmlなどと同じ階層)に「Procfile」という名前で以下の内容のファイルを作成。
Heroku上でアプリケーションを動かすためにはこのファイルが必要らしい。
言語ごとに書き方が色々あるとのこと。
web: java $JAVA_OPTS -jar target/dependency/webapp-runner.jar --port $PORT target/*.war
詳しくはこちら参照
※ローカルからgitを使ってpushした場合、上記ではエラーになることがあり、
web: java $JAVA_OPTS -jar target/*.war --server.port=$PORT
上記にするとうまくいった。
- system.propertiesを追加
Procfileと同じ階層に「system.properties」という名前のファイルを追加。
内容はJavaのバージョン。自身のバージョンに合わせて。
バージョンが異なっているとビルドする際にエラーが出る。
Java 11の場合は1.8を11に変更する。
java.runtime.version=1.8
- application.propertiesにDB接続情報を追加
Herokuのアプリケーションの管理画面のSettingsタブの「Reveal Config Vars」からデータベースの接続URL情報が確認可能。
JavaのアプリケーションのDB接続情報に反映させる。
Spring JDBCを使ってた場合、application.propertiesあたりに設定を書くので、そこに反映させる。
設定が終わったらGitHub上に反映。
GitHub上で直接修正しても可。
デプロイ
Herokuのアプリケーションの管理画面からDeployタブを表示。
GitHubに接続するボタンがあるので、そこから接続する。
ブランチを選んで「Deploy」押下で、Herokuにデプロイできる。
後はHerokuの管理画面のOpen appボタンよりアプリケーションを確認する。
その他の注意点
- メッセージリソースを使用している場合
エラーメッセージなどをSpringのメッセージリソースを使用している場合には注意が必要。
通常、messages_ja.properties でメッセージリソースを作成するが、Herokuの場合リージョンが米国になるため、
messages_en.properties を作成する必要がある。
(メッセージが読み込めない、という旨のエラーメッセージが出る。)
なので、messages_ja.propertiesをコピーしてmessages_en.propertiesを作成し直す必要がある。
GitHubと連携せずに、gitコマンドで直接Herokuにデプロイする方法
Git を使用したデプロイ
を参考にすればできる。