Упражнение. Настройка приложений контейнеров Azure
В этом уроке вы создадите группу ресурсов Azure, содержащую ресурсы для приложения. Затем вы настроили базу данных PostgreSQL с помощью Azure CLI. Наконец, вы настроите приложение Quarkus для доступа к удаленной базе данных PostgreSQL. Используйте терминал для выполнения команд.
Подготовка рабочей среды
Необходимо настроить некоторые переменные среды. Ниже приведены некоторые заметки о создаваемых переменных:
Переменная | Описание |
---|---|
AZ_PROJECT |
Имя проекта. Чтобы сохранить это значение уникальным, рекомендуется использовать AZ_PROJECT_<your initials> . |
AZ_RESOURCE_GROUP |
Имя группы ресурсов, содержащей ресурсы. |
AZ_LOCATION |
Регион Azure. Рекомендуется использовать регион, близкий к месту жизни. Чтобы просмотреть список доступных регионов, введите az account list-locations в командной строке. |
AZ_CONTAINERAPP |
Имя экземпляра Azure Container Apps, в котором размещаются контейнеры. |
AZ_CONTAINERAPP_ENV |
Название среды Azure Container Apps. |
AZ_POSTGRES_SERVER_NAME |
Имя сервера PostgreSQL. Неалфавитно-цифровые символы не разрешены: -, _, !, $, #, %. Имя должно быть уникальным в Azure. Обязательно используйте уникальный идентификатор. |
AZ_POSTGRES_DB_NAME |
Имя базы данных PostgreSQL. Имя базы данных PostgreSQL по умолчанию — postgres . |
AZ_POSTGRES_USERNAME |
Имя пользователя администратора по умолчанию для сервера базы данных PostgreSQL. |
AZ_POSTGRES_PASSWORD |
Пароль по умолчанию для сервера базы данных PostgreSQL. Используйте безопасный пароль. |
Заметка
Вы можете назовите ресурсы Azure любым способом, но рекомендуется просмотреть примеры сокращения для ресурсов Azure. В этой статье приведены примеры сокращений для многих ресурсов Azure (например, rg
для групп ресурсов и ca
для приложений контейнеров).
Используйте следующие команды, чтобы настроить переменные. Обязательно измените значения, как описано в предыдущей таблице.
export AZ_PROJECT_<your initials>="azure-deploy-quarkus"
export AZ_RESOURCE_GROUP="rg${AZ_PROJECT_<your initials>}"
export AZ_LOCATION="eastus"
export AZ_CONTAINERAPP="ca${AZ_PROJECT_<your initials>}"
export AZ_CONTAINERAPP_ENV="cae${AZ_PROJECT_<your initials>}"
export AZ_POSTGRES_DB_NAME="postgres${AZ_PROJECT_<your initials>}"
export AZ_POSTGRES_USERNAME="<user-name>"
export AZ_POSTGRES_PASSWORD="<secure-password>"
export AZ_POSTGRES_SERVER_NAME="psql${AZ_PROJECT_<your initials>}"
Эти переменные среды используются в остальной части этого модуля.
Затем создайте группу ресурсов:
az group create \
--name $AZ_RESOURCE_GROUP \
--location $AZ_LOCATION
Создание экземпляра Базы данных Azure для PostgreSQL
Теперь вы создадите управляемый сервер PostgreSQL. Выполните следующую команду, чтобы создать небольшой экземпляр Базы данных Azure для PostgreSQL:
Если вы еще не создали сервер PostgreSQL, необходимо зарегистрировать поставщика. Чтобы зарегистрировать поставщика PostgreSQL, выполните следующую команду:
az provider register --namespace Microsoft.DBforPostgreSQL
Затем создайте сервер PostgreSQL.
az postgres flexible-server create \
--resource-group "$AZ_RESOURCE_GROUP" \
--location "$AZ_LOCATION" \
--name "$AZ_POSTGRES_SERVER_NAME" \
--database-name "$AZ_POSTGRES_DB_NAME" \
--admin-user "$AZ_POSTGRES_USERNAME" \
--admin-password "$AZ_POSTGRES_PASSWORD" \
--public-access "All" \
--tier "Burstable" \
--sku-name "Standard_B1ms" \
--storage-size 32 \
--version "16"
Эта команда создает небольшой сервер PostgreSQL, использующий переменные, настроенные ранее.
Настройка Quarkus для доступа к базе данных PostgreSQL
Теперь вы подключите приложение Quarkus к базе данных PostgreSQL. Для этого сначала необходимо получить строку подключения для базы данных:
export POSTGRES_CONNECTION_STRING=$(
az postgres flexible-server show-connection-string \
--server-name "$AZ_POSTGRES_SERVER_NAME" \
--database-name "$AZ_POSTGRES_DB_NAME" \
--admin-user "$AZ_POSTGRES_USERNAME" \
--admin-password "$AZ_POSTGRES_PASSWORD" \
--query "connectionStrings.jdbc" \
--output tsv
)
export POSTGRES_CONNECTION_STRING_SSL="$POSTGRES_CONNECTION_STRING&ssl=true"
echo "POSTGRES_CONNECTION_STRING_SSL=$POSTGRES_CONNECTION_STRING_SSL"
Обратите внимание на строку подключения, которая возвращена.
Заметка
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, например для баз данных, кэшей, сообщений или служб ИИ, требует высокой степени доверия к приложению и несет риски, не присутствующих в других потоках. Используйте этот поток, только если более безопасные варианты, такие как управляемые удостоверения для подключений без пароля или без ключа, недоступны. Для локальных операций компьютера предпочитайте удостоверения пользователей для бессерверных или бессерверных подключений.
Настройка приложения Quarkus для подключения к базе данных PostgreSQL
Обновите файл application.properties
в папке src/main/resources
проекта, чтобы настроить строку подключения к базе данных PostgreSQL. Для этого задайте для свойства quarkus.datasource.jdbc.url
значение ранее выходного $POSTGRES_CONNECTION_STRING_SSL
. Часть строки подключения &ssl=true&sslmode=require
принуждает драйвер использовать SSL, что является требованием для Azure Database для PostgreSQL.
quarkus.hibernate-orm.database.generation=update
quarkus.datasource.jdbc.url=<the POSTGRES_CONNECTION_STRING_SSL value>
Запустите приложение Quarkus локально, чтобы проверить подключение к удаленной базе данных
Используйте эту команду для локального запуска приложения:
./mvnw clean quarkus:dev # On Mac or Linux
mvnw.cmd clean quarkus:dev # On Windows
При работе Quarkus создайте несколько задач, используя следующие команды "cURL" в отдельном окне терминала:
curl --header "Content-Type: application/json" \
--request POST \
--data '{"description":"Take Quarkus MS Learn","details":"Take the MS Learn on deploying Quarkus to Azure Container Apps","done": "true"}' \
http://127.0.0.1:8080/api/todos
curl --header "Content-Type: application/json" \
--request POST \
--data '{"description":"Take Azure Container Apps MS Learn","details":"Take the ACA Learn module","done": "false"}' \
http://127.0.0.1:8080/api/todos
Затем убедитесь, что задачи находятся в базе данных, получая доступ к конечной точке GET, определенной в приложении to-do.
curl http://127.0.0.1:8080/api/todos
Вы увидите следующие выходные данные:
[
{
"id": 1,
"description": "Take Quarkus MS Learn",
"details": "Take the MS Learn on deploying Quarkus to Azure Container Apps",
"done": true,
"createdAt": "2025-02-26T08:03:28.390854Z"
},
{
"id": 2,
"description": "Take Azure Container Apps MS Learn",
"details": "Take the ACA Learn module",
"done": false,
"createdAt": "2025-02-26T08:03:34.142249Z"
}
]
Если вы видите эти выходные данные, вы успешно запустите приложение Quarkus и подключитесь к удаленной базе данных PostgreSQL.