演習 - データベースに接続する
Spring PetClinic アプリケーションを既定の H2 メモリ内データベースと共にデプロイしたため、PostgreSQL などのより強力で永続的なデータベースに接続できます。 永続データベースを使用すると、アプリケーションが再起動された場合でもアプリケーション データが確実に格納され、運用環境での使用に対する持続性とスケーラビリティが向上します。
注
このユニットは省略可能です。 データベース構成に既に慣れている場合は、スキップできます。
PostgreSQL サーバーを作成する
次のコマンドを使用して、データベース接続の作成に使用する環境変数を設定します。
export POSTGRESQLSERVER="petclinic-server"
export DATABASE="petclinic"
PostgreSQL の spring.profiles.active を更新する
次のコマンドを使用して、デプロイされたコンテナー アプリの環境変数を更新して、データベースを PostgreSQL として設定します。
az containerapp update \
--resource-group $RESOURCE_GROUP \
--name $APP_NAME \
--set-env-vars "spring.profiles.active"="postgres"
新しいデータベースの作成
新しい PostgreSQL フレキシブル サーバー インスタンス内にデータベースを作成するには、次の手順に従います。
次のコマンドを使用して PostgreSQL フレキシブル サーバーを作成します。
az postgres flexible-server create \ --resource-group $RESOURCE_GROUP \ --name $POSTGRESQLSERVER自動生成された管理者のユーザー名とパスワードを出力から探し、これらの資格情報を安全な場所に保存します。 必要に応じて、後でデータベースの接続と構成に使用できます。
次のコマンドを使用して、PostgreSQL フレキシブル サーバー インスタンスに新しいデータベースを作成します。
az postgres flexible-server db create \ --resource-group $RESOURCE_GROUP \ --database-name $DATABASE \ --server-name $POSTGRESQLSERVER詳細については、「 クイック スタート: Azure Database for PostgreSQL - フレキシブル サーバーのインスタンスを作成する」を参照してください。
Service Connector 経由で接続する
次に、次の手順を使用して、以前にデプロイしたコンテナー アプリを PostgreSQL データベースに接続します。
Azure portal で、Azure Container Apps インスタンスに移動します。
設定>Service Connector に移動します。
[ 作成] を選択し、次の詳細を使用して接続フォームに入力します。
-
基本:
- サービスの種類には、DB for PostgreSQL フレキシブル サーバーを使用します。
- PostgreSQL フレキシブル サーバーの場合は、petclinic-server を使用します。
- PostgreSQL データベースの場合は、petclinic を使用します。
- クライアントの種類には、SpringBoot を使用します。
-
認証:
- [接続文字列] を選択します。
- [ユーザー名] フィールドと [パスワード] フィールドの値を入力し、他のフィールドは既定の設定のままにします。
-
基本:
変更を確認してデプロイします。
デプロイの準備ができたら、[ 検証 ] を選択して接続の状態を検証します。
詳細については、「 マネージド ID を使用してシークレットを使用せずに Java Quarkus Container App から PostgreSQL Database に接続する」を参照してください。
データベースのセットアップを検証する
構成は完了です。 PostgreSQL データベースに接続すると、次の例に示すようなテーブルが作成されていることがわかります。
List of relations
| Schema | Name | Type |
|--------|-----------------|-------|
| public | owners | table |
| public | pets | table |
| public | specialties | table |
| public | types | table |
| public | vet_specialties | table |
| public | vets | table |
| public | visits | table |