1. 概要

この記事では、Spring Cloudコネクタを使用したHerokuでのSpring Bootアプリケーションのセットアップについて説明します。

Herokuは、Webサービスのホスティングを提供するサービスです。また、システム監視からデータベースストレージまですべてを提供する、アドオンと呼ばれるさまざまなサードパーティサービスを提供します。

これらすべてに加えて、Gitにシームレスに統合されるカスタムCI / CDパイプラインがあり、開発から本番環境への移行を促進します。

Springは、Spring Cloudコネクタライブラリを介してHerokuをサポートします。これを使用して、アプリケーションでPostgreSQLデータソースを自動的に構成します。

アプリの作成に取り掛かりましょう。

2. 春のブートブックサービス

まず、新しいシンプルなSpring Bootサービスを作成しましょう。

3. Herokuサインアップ

次に、Herokuアカウントにサインアップする必要があります。 heroku.com にアクセスして、ページの右上隅にあるサインアップボタンをクリックします。

アカウントを取得したので、CLIツールを取得する必要があります。 heroku-cli インストールページに移動して、このソフトウェアをインストールする必要があります。 これにより、このチュートリアルを完了するために必要なツールが提供されます。

4. Herokuアプリケーションを作成する

Heroku CLIができたので、アプリに戻りましょう。

4.1. Gitリポジトリを初期化する

Herokuは、ソース管理としてgitを使用する場合に最適に機能します。

まず、 pom.xml ファイルと同じディレクトリであるアプリケーションのルートに移動し、コマンド gitinitを実行してgitリポジトリを作成します。 次に、gitadd。およびgitcommit -m“ first commit”を実行します。

これで、アプリケーションがローカルのgitリポジトリに保存されました。

4.2. HerokuWebアプリをプロビジョニングする

次に、Heroku CLIを使用して、アカウントにWebサーバーをプロビジョニングしましょう。

まず、Herokuアカウントを認証する必要があります。 コマンドラインからherokuloginを実行し、ログインしてSSHキーを作成するための指示に従います。

次に、 herokucreateを実行します。 これにより、Webサーバーがプロビジョニングされ、デプロイ用にコードをプッシュできるリモートリポジトリが追加されます。 コンソールにドメインが印刷されていることも確認できます。後でアクセスできるように、このドメインをコピーしてください。

4.3. コードをHerokuにプッシュする

次に、gitを使用してコードを新しいHerokuリポジトリにプッシュします。

コマンドgitpush heroku master を実行して、コードをHerokuに送信します。

コンソール出力に、アップロードが成功したことを示すログが表示されます。その後、システムは依存関係をダウンロードし、アプリケーションをビルドし、テスト(存在する場合)を実行し、すべてがスムーズに進んだ場合はアプリをデプロイします。

これで、アプリケーションがWebサーバーに公開されました。

5. Herokuでインメモリをテストする

アプリが機能していることを確認しましょう。 作成ステップのドメインを使用して、ライブアプリケーションをテストしてみましょう。

いくつかのHTTPリクエストを発行しましょう:

POST https://{heroku-domain}/books HTTP
{"author":"baeldung","title":"Spring Boot on Heroku"}

戻る必要があります:

{
    "title": "Spring Boot on Heroku",
    "author": "baeldung"
}

次に、作成したオブジェクトを読み取ってみましょう。

GET https://{heroku-domain}/books/1 HTTP

これは戻るはずです:

{
    "id": 1,
    "title": "Spring Boot on Heroku",
    "author": "baeldung"
}

それはすべて良さそうですが、本番環境では、永続的なデータストアを使用する必要があります。

PostgreSQLデータベースのプロビジョニングと、それを使用するためのSpringアプリの構成について説明します。

6. PostgreSQLの追加

PostgreSQLデータベースを追加するには、次のコマンドを実行します heroku addons:create heroku-postgresql:hobby-dev

これにより、Webサーバーのデータベースがプロビジョニングされ、接続情報を提供する環境変数が追加されます。

Spring Cloud Connectorは、この変数を検出し、データソースを自動的にセットアップするように構成されています。SpringはPostgreSQLを使用することを検出できます。

Spring BootにPostgreSQLを使用していることを知らせるには、2つの変更を加える必要があります。

まず、PostgreSQLドライバーを含めるための依存関係を追加する必要があります。

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.10</version>
</dependency>

次に、プロパティを追加して、Springデータコネクタが使用可能なリソースに従ってデータベースを構成できるようにします。

src / main / resources で、application.propertiesファイルを作成し、次のプロパティを追加します。

spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.maxActive=10
spring.datasource.maxIdle=5
spring.datasource.minIdle=2
spring.datasource.initialSize=5
spring.datasource.removeAbandoned=true
spring.jpa.hibernate.ddl-auto=create

これにより、データベース接続がプールされ、アプリケーションの接続が制限されます。 Herokuは、開発層データベース内のアクティブな接続の数を10 に制限しているため、最大値を10に設定します。 さらに、 hibernate.ddl プロパティを作成するように設定して、ブックテーブルが自動的に作成されるようにします。

最後に、これらの変更をコミットして、 git push herokumasterを実行します。 これにより、これらの変更がHerokuアプリにプッシュされます。 アプリが起動したら、前のセクションのテストを実行してみてください。

最後に行う必要があるのは、ddl設定を変更することです。 その値も更新しましょう:

spring.jpa.hibernate.ddl-auto=update

これにより、アプリの再起動時にエンティティに変更が加えられたときにスキーマを更新するようにアプリケーションに指示します。 以前と同じようにこの変更をコミットしてプッシュし、Herokuアプリに変更をプッシュします。

このためにカスタムデータソース統合を作成する必要はありませんでした。 これは、Spring CloudコネクタがHerokuとPostgreSQLを使用していることを検出し、Herokuデータソースを自動的に接続するためです。

5. 結論

これで、Herokuで実行中のSpringBootアプリができました。

何よりも、単一のアイデアから実行中のアプリケーションに簡単に移行できるため、Herokuを確実にデプロイできます。

Herokuとすべてのツールの詳細については、heroku.comで詳細を読むことができます。

いつものように、コードスニペットはGitHubにあります。