Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как быстро развернуть Red Hat Quarkus в приложениях контейнеров Microsoft Azure с простым приложением CRUD. Приложение — это список действий с интерфейсом JavaScript и конечной точкой REST. Гибкий сервер Базы данных Azure для PostgreSQL предоставляет уровень сохраняемости для приложения. В этой статье показано, как протестировать приложение локально и развернуть его в контейнерных приложениях.
Необходимые компоненты
- Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начать работу.
- Подготовьте локальный компьютер с установленной операционной системой, например Ubuntu, macOS или подсистема Windows для Linux.
- Установите реализацию Java SE версии 17 или более поздней версии, например сборку OpenJDK майкрософт.
- Установите Maven, версию 3.9.8 или более позднюю.
- Установите Docker для вашей ОС.
- Установите jq.
- Установите cURL.
- Установите cli Quarkus версии 3.12.1 или более поздней.
-
Установите Azure CLI для выполнения команд Azure CLI.
- Войдите в Azure CLI с помощью команды
az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других параметрах входа см. в статье "Вход в Azure с помощью Azure CLI". - Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье "Использование расширений и управление ими" с помощью Azure CLI.
- Запустите
az version, чтобы найти установленные версии и зависимые библиотеки. Чтобы обновить до последней версии, запуститеaz upgrade. Для этой статьи требуется по крайней мере версия 2.61.0 Azure CLI.
- Войдите в Azure CLI с помощью команды
Создание проекта приложения
Используйте следующие команды, чтобы клонировать пример проекта Java для этой статьи. Пример размещен на сайте GitHub.
git clone https://github.com/Azure-Samples/quarkus-azure
cd quarkus-azure
git checkout 2025-05-08
cd aca-quarkus
Если появится сообщение о состоянии detached HEAD, его можно безопасно игнорировать. Поскольку эта статья не требует подтверждений, состояние detached HEAD подходит.
Тестирование приложения Quarkus локально
В этом разделе показано, как локально запустить приложение.
Quarkus поддерживает автоматическую подготовку ненастроенных служб в режиме разработки и тестирования. Quarkus ссылается на эту возможность как службы разработки. Предположим, вы включаете функцию Quarkus, например подключение к службе базы данных. Вы хотите протестировать приложение, но еще не полностью настроили подключение к реальной базе данных. Quarkus автоматически запускает версию заглушки соответствующей службы и подключает приложение к нему. Дополнительные сведения см. в разделе "Общие сведения о службах разработки" в документации по Quarkus.
Убедитесь, что среда контейнера запущена и используйте следующую команду, чтобы ввести режим разработки Quarkus:
quarkus dev
Вместо этого quarkus devможно выполнить то же самое с Помощью Maven mvn quarkus:dev.
Вам может быть предложено отправить данные телеметрии использования режима разработки Quarkus. Если да, ответьте, как вам нравится.
Режим разработки Quarkus обеспечивает динамическую перезагрузку с фоновой компиляцией. Если изменить любой аспект исходного кода приложения и обновить браузер, вы увидите изменения. Если возникают проблемы с компиляцией или развертыванием, вы ознакаете сообщение об ошибке. Режим разработки Quarkus прослушивает отладчик через порт 5005. Если вы хотите дождаться подключения отладчика перед выполнением, перед -Dsuspend выполнением Если отладчик вообще не нужен, можно использовать -Ddebug=false.
Выходные данные должны выглядеть следующим образом:
__ ____ __ _____ ___ __ ____ ______
--/ __ \/ / / / _ | / _ \/ //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
INFO [io.quarkus] (Quarkus Main Thread) quarkus-todo-demo-app-aca 1.0.0-SNAPSHOT on JVM (powered by Quarkus 3.2.0.Final) started in 14.826s. Listening on: http://localhost:8080
INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
INFO [io.quarkus] (Quarkus Main Thread) Installed features: [agroal, cdi, hibernate-orm, hibernate-validator, jdbc-postgresql, narayana-jta, resteasy-reactive, resteasy-reactive-jackson, smallrye-context-propagation, vertx]
--
Tests paused
Press [e] to edit command line args (currently ''), [r] to resume testing, [o] Toggle test output, [:] for the terminal, [h] for more options>
Нажмите клавишу W в терминале, где выполняется режим разработки Quarkus. Ключ w открывает веб-браузер по умолчанию для отображения Todo приложения. Вы также можете получить доступ к графическому интерфейсу http://localhost:8080 приложения напрямую.
Попробуйте выбрать несколько элементов todo в списке дел. Пользовательский интерфейс указывает выделение с помощью стиля текста с зачеркнутыми элементами. Вы также можете добавить новый элемент todo в список дел, введя "Проверить приложения Todo" и нажав клавишу ВВОД, как показано на следующем снимке экрана:
Доступ к API RESTful (/api) для получения всех элементов todo, которые хранятся в локальной базе данных PostgreSQL:
curl --verbose http://localhost:8080/api | jq .
Выходные данные должны выглядеть следующим образом:
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /api HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.88.1
> Accept: */*
>
< HTTP/1.1 200 OK
< content-length: 664
< Content-Type: application/json;charset=UTF-8
<
{ [664 bytes data]
100 664 100 664 0 0 13278 0 --:--:-- --:--:-- --:--:-- 15441
* Connection #0 to host localhost left intact
[
{
"id": 1,
"title": "Introduction to Quarkus Todo App",
"completed": false,
"order": 0,
"url": null
},
{
"id": 2,
"title": "Quarkus on Azure App Service",
"completed": false,
"order": 1,
"url": "https://learn.microsoft.com/en-us/azure/app-service/quickstart-java"
},
{
"id": 3,
"title": "Quarkus on Azure Container Apps",
"completed": false,
"order": 2,
"url": "https://learn.microsoft.com/en-us/training/modules/deploy-java-quarkus-azure-container-app-postgres/"
},
{
"id": 4,
"title": "Quarkus on Azure Functions",
"completed": false,
"order": 3,
"url": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-create-first-quarkus"
},
{
"id": 5,
"title": "Verify Todo apps",
"completed": false,
"order": 5,
"url": null
}
]
Нажмите q, чтобы выйти из режима разработки Quarkus.
Создание ресурсов Azure для запуска приложения Quarkus
В этом разделе показано, как создать следующие ресурсы Azure для запуска примера приложения Quarkus:
- Гибкий сервер Базы данных Azure для PostgreSQL
- Реестр контейнеров Azure
- Приложения-контейнеры Azure
Некоторые из этих ресурсов должны иметь уникальные имена в пределах подписки Azure. Чтобы обеспечить эту уникальность, можно использовать инициалы, последовательность, дату, суффикс шаблон. Чтобы применить этот шаблон, присвойте ресурсам имя, перечислив свои инициалы, некоторые порядковые номера, текущую дату и определенный суффикс ресурса, например rg для группы ресурсов. Следующие переменные среды используют этот шаблон. Замените значения заполнителей и UNIQUE_VALUELOCATION собственными значениями и выполните команды в терминале.
export UNIQUE_VALUE=<your unique value, such as mjg101424>
export RESOURCE_GROUP_NAME=${UNIQUE_VALUE}rg-passwordless
export LOCATION=<your desired Azure region for deploying your resources - for example, eastus>
export REGISTRY_NAME=${UNIQUE_VALUE}regpasswordless
export DB_SERVER_NAME=${UNIQUE_VALUE}dbpasswordless
export DB_NAME=demodb
export ACA_ENV=${UNIQUE_VALUE}envpasswordless
export ACA_NAME=${UNIQUE_VALUE}acapasswordless
Чтобы создать группу ресурсов, выполните следующую команду:
az group create \
--name $RESOURCE_GROUP_NAME \
--location $LOCATION
Создание гибкого экземпляра сервера Базы данных Azure для PostgreSQL
Гибкий сервер Базы данных Azure для PostgreSQL — это полностью управляемая служба баз данных, предназначенная для более детального управления и гибкости функций управления базами данных и параметров конфигурации. В этом разделе показано, как создать гибкий экземпляр сервера Базы данных Azure для PostgreSQL с помощью Azure CLI. Более подробную информацию см. в разделе "Быстрый старт: Создание экземпляра базы данных Azure для PostgreSQL — гибкий сервер".
Создайте База данных Azure для PostgreSQL гибкий экземпляр сервера с помощью следующей команды:
az postgres flexible-server create \
--name $DB_SERVER_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--database-name $DB_NAME \
--public-access None \
--sku-name Standard_B1ms \
--tier Burstable \
--active-directory-auth Enabled
Создание сервера, базы данных, пользователя администратора и правил брандмауэра занимает несколько минут. Если команда выполнена успешно, выходные данные выглядят примерно так:
{
"connectionString": "postgresql://REDACTED:REDACTED@<DB_SERVER_NAME>.postgres.database.azure.com/<DB_NAME>?sslmode=require",
"databaseName": "<DB_NAME>",
"host": "<DB_SERVER_NAME>.postgres.database.azure.com",
"id": "/subscriptions/REDACTED/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.DBforPostgreSQL/flexibleServers/<DB_SERVER_NAME>",
"location": "East US",
"password": "REDACTED",
"resourceGroup": "<RESOURCE_GROUP_NAME>",
"skuname": "Standard_B1ms",
"username": "REDACTED",
"version": "13"
}
Добавьте текущего пользователя, выполнившего вход в качестве администратора Microsoft Entra, в экземпляр гибкого сервера База данных Azure для PostgreSQL с помощью следующих команд:
ENTRA_ADMIN_NAME=$(az ad signed-in-user show --query userPrincipalName -o tsv)
az postgres flexible-server ad-admin create \
--resource-group $RESOURCE_GROUP_NAME \
--server-name $DB_SERVER_NAME \
--display-name $ENTRA_ADMIN_NAME \
--object-id $(az ad signed-in-user show --query id -o tsv)
Успешные выходные данные — это объект JSON, включая свойство "type": "Microsoft.DBforPostgreSQL/flexibleServers/administrators".
Создание экземпляра Microsoft Реестр контейнеров Azure
Так как Quarkus — это облачная технология, она имеет встроенную поддержку создания контейнеров, работающих в приложениях контейнеров. Приложения-контейнеры полностью зависят от наличия реестра контейнеров, из которого он находит образы контейнеров для запуска. В контейнерных приложениях есть встроенная поддержка Реестр контейнеров Azure.
Используйте команду az acr create для создания экземпляра реестра контейнеров. В следующем примере создается экземпляр реестра контейнеров с именем значения переменной ${REGISTRY_NAME}среды:
az acr create \
--resource-group $RESOURCE_GROUP_NAME \
--location ${LOCATION} \
--name $REGISTRY_NAME \
--sku Basic
Через некоторое время вы увидите выходные данные JSON, содержащие следующие строки:
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "<YOUR_RESOURCE_GROUP>",
Получите сервер входа для экземпляра реестра контейнеров с помощью следующей команды:
export LOGIN_SERVER=$(az acr show \
--name $REGISTRY_NAME \
--query 'loginServer' \
--output tsv)
echo $LOGIN_SERVER
Подключите Docker к экземпляру реестра контейнеров Azure
Войдите в экземпляр реестра контейнеров. Вход позволяет отправить изображение. Используйте следующую команду, чтобы войти в реестр:
az acr login --name $REGISTRY_NAME
Если вы успешно авторизовались в экземпляре реестра контейнеров, вы увидите Login Succeeded в конце вывода команды.
Создать среду
Среда в Azure Container Apps создает безопасную границу вокруг группы приложений-контейнеров. Развертываемые в одной среде приложения-контейнеры развертываются в одной виртуальной сети и записывают журналы в одну рабочую область Log Analytics.
Если вы впервые создаете среду для приложений контейнеров Azure, вам, возможно, потребуется зарегистрировать пространства имен Microsoft.App и Microsoft.OperationalInsights. Используйте следующие команды для регистрации пространств имен:
az provider register --namespace Microsoft.App --wait
az provider register --namespace Microsoft.OperationalInsights --wait
Теперь используйте az containerapp env create команду для создания среды, как показано в следующем примере:
az containerapp env create \
--resource-group $RESOURCE_GROUP_NAME \
--location $LOCATION \
--name $ACA_ENV
Если вам будет предложено установить расширение, ответ Y.
Настройка собственной конфигурации облака
Как облачная технология, Quarkus предлагает возможность автоматически создавать образы контейнеров. Дополнительные сведения см. в разделе "Образы контейнеров". Затем разработчики могут развернуть образ приложения на целевой контейнерной платформе, например приложения контейнеров Azure.
Чтобы создать образ контейнера, используйте следующую команду, чтобы добавить container-image-jib расширение в локальный терминал:
quarkus ext add container-image-jib
Quarkus изменяет POM, чтобы обеспечить включение расширения в число <dependencies>. Если вам будет предложено установить что-то, что называется JBang, ответьте да и разрешите его установке.
Выходные данные должны выглядеть следующим образом:
[SUCCESS] ✅ Extension io.quarkus:quarkus-container-image-jib has been installed
Откройте файл pom.xml, и вы увидите следующие зависимости, добавленные расширениемcontainer-image-jib:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-container-image-jib</artifactId>
</dependency>
Затем добавьте следующие зависимости в файл pom.xml для поддержки проверки подлинности без пароля с помощью гибкого сервера База данных Azure для PostgreSQL:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity-extensions</artifactId>
<version>1.1.20</version>
</dependency>
Как облачная технология Quarkus поддерживает понятие профилей конфигурации. Quarkus имеет следующие три встроенных профиля:
-
dev— активируется в режиме разработки. -
test— активируется при выполнении тестов. -
prod— Профиль по умолчанию, если он не запущен в режиме разработки или тестирования.
Quarkus поддерживает любое количество именованных профилей по мере необходимости.
Остальные действия, описанные в этом разделе, позволяют раскомментировать и настроить значения в файле src/main/resources/application.properties . Убедитесь, что все строки, начинающиеся с # %prod., раскомментированы, удалив начальный символ #.
Префикс %prod. указывает, что эти свойства активны при выполнении prod в профиле. Дополнительные сведения о профилях конфигурации см. в документации Quarkus.
Проверка конфигурации базы данных
После раскомментации свойств конфигурация базы данных в файле src/main/resources/application.properties должна выглядеть следующим образом:
# Database configurations
%prod.quarkus.datasource.db-kind=postgresql
%prod.quarkus.datasource.jdbc.url=
%prod.quarkus.datasource.username=
%prod.quarkus.datasource.password=
%prod.quarkus.hibernate-orm.database.generation=create
%prod.quarkus.hibernate-orm.sql-load-script=no-file
Удалите свойство %prod.quarkus.datasource.password, так как оно не требуется при использовании проверки подлинности без пароля с гибким сервером Базы данных Azure для PostgreSQL. Обновите другие свойства %prod.quarkus.datasource.jdbc.url подключения к базе данных и %prod.quarkus.datasource.username значения, как показано в следующем примере. Последняя конфигурация должна выглядеть следующим образом:
# Database configurations
%prod.quarkus.datasource.db-kind=postgresql
%prod.quarkus.datasource.jdbc.url=jdbc:postgresql://${AZURE_POSTGRESQL_HOST}:${AZURE_POSTGRESQL_PORT}/${AZURE_POSTGRESQL_DATABASE}?\
authenticationPluginClassName=com.azure.identity.extensions.jdbc.postgresql.AzurePostgresqlAuthenticationPlugin\
&sslmode=require
%prod.quarkus.datasource.username=${AZURE_POSTGRESQL_USERNAME}
%prod.quarkus.hibernate-orm.database.generation=create
%prod.quarkus.hibernate-orm.sql-load-script=no-file
Значение ${AZURE_POSTGRESQL_HOST}, ${AZURE_POSTGRESQL_PORT}${AZURE_POSTGRESQL_DATABASE}и ${AZURE_POSTGRESQL_USERNAME} предоставляется средой приложений контейнеров Azure во время выполнения с помощью расширения без пароля соединителя службы далее в этой статье.
Как правило, вы не ожидаете, что данные, сохраненные в базе данных, удаляются и повторяются с примерами данных в рабочей среде. Именно поэтому можно увидеть, что схема указана такquarkus.hibernate-orm.database.generation, чтобы приложение только создает схемуcreate, если она не существует при первоначальном запуске. Кроме того, база данных не заполняется заранее с примерами данных, так как hibernate-orm.sql-load-script указывается как no-file. Этот параметр отличается от того, когда вы запустили приложение локально в режиме разработки ранее. Значения по умолчанию в режиме quarkus.hibernate-orm.database.generation разработки и соответственно, это означает, что приложение всегда удаляет и hibernate-orm.sql-load-scriptdrop-and-createimport.sql создает схему базы данных и загружает данные, определенные в import.sql. Файл import.sql является удобным объектом из Quarkus.
Если файл src/main/resources/import.sql существует в jar-файле Quarkus, а значение hibernate-orm.sql-load-script свойства равноimport.sql, инструкции SQL DML в этом файле выполняются во время запуска приложения.
Тестирование приложения Quarkus локально с помощью гибкого сервера Базы данных Azure для PostgreSQL
Перед развертыванием приложения Quarkus в Azure Container Apps проверьте подключение к гибкой версии сервера базы данных Azure для PostgreSQL.
Сначала добавьте локальный IP-адрес в правила брандмауэра гибкого экземпляра сервера базы данных Azure для PostgreSQL с помощью следующих команд:
export AZ_LOCAL_IP_ADDRESS=$(curl -s https://whatismyip.akamai.com)
az postgres flexible-server firewall-rule create \
--resource-group $RESOURCE_GROUP_NAME \
--name $DB_SERVER_NAME \
--rule-name $DB_SERVER_NAME-database-allow-local-ip \
--start-ip-address $AZ_LOCAL_IP_ADDRESS \
--end-ip-address $AZ_LOCAL_IP_ADDRESS
Затем задайте следующие переменные среды в предыдущем терминале. Эти переменные среды используются для подключения к гибкому экземпляру сервера Базы данных Azure для PostgreSQL из приложения Quarkus, работающего локально:
export AZURE_POSTGRESQL_HOST=${DB_SERVER_NAME}.postgres.database.azure.com
export AZURE_POSTGRESQL_PORT=5432
export AZURE_POSTGRESQL_DATABASE=${DB_NAME}
export AZURE_POSTGRESQL_USERNAME=${ENTRA_ADMIN_NAME}
Запустите приложение Quarkus локально, чтобы проверить подключение к гибкому экземпляру сервера Базы данных Azure для PostgreSQL. Используйте следующие команды, чтобы запустить приложение в рабочем режиме:
mvn clean package -DskipTests
java -jar target/quarkus-app/quarkus-run.jar
Чтобы получить доступ к приложению Todo, откройте новый веб-браузер для http://localhost:8080. Вы должны увидеть то же приложение Todo, что и при локальном запуске приложения в режиме разработки без элементов Todo.
Чтобы остановить приложение, нажмите клавишу Control+C.
Создание образа контейнера и отправка его в реестр контейнеров
Теперь используйте следующую команду для создания самого приложения. Эта команда использует расширение Jib для создания образа контейнера.
export TODO_QUARKUS_IMAGE_NAME=todo-quarkus-aca
export TODO_QUARKUS_IMAGE_TAG=${LOGIN_SERVER}/${TODO_QUARKUS_IMAGE_NAME}:1.0
quarkus build -Dquarkus.container-image.build=true -Dquarkus.container-image.image=${TODO_QUARKUS_IMAGE_TAG} --no-tests
Выходные данные должны заканчиваться BUILD SUCCESS.
Вы можете проверить, создается ли образ контейнера, а также с помощью командной строки docker (CLI), как показано в следующем примере:
docker images | grep ${TODO_QUARKUS_IMAGE_NAME}
Результат должен быть аналогичным приведенному ниже:
<LOGIN_SERVER_VALUE>/todo-quarkus-aca 1.0 0804dfd834fd 2 minutes ago 407MB
Отправьте образы контейнеров в реестр контейнеров с помощью следующей команды:
docker push ${TODO_QUARKUS_IMAGE_TAG}
Результат должен выглядеть следующим образом:
The push refers to repository [<LOGIN_SERVER_VALUE>/todo-quarkus-aca]
188a550fce3d: Pushed
4e3afea591e2: Pushed
1db0eba807a6: Pushed
c72d9ccda0b2: Pushed
d7819b8a2d18: Pushed
d0e5cba6b262: Pushed
e0bac91f0f10: Pushed
1.0: digest: sha256:f9ccb476e2388efa0dfdf817625a94f2247674148a69b7e4846793e63c8be994 size: 1789
Развертывание приложения Quarkus в приложениях контейнеров Azure
Теперь, когда вы отправляете образ приложения в реестр контейнеров, используйте следующую команду, чтобы создать экземпляр приложений контейнеров Azure для запуска приложения после извлечения образа из реестра контейнеров:
az containerapp create \
--resource-group $RESOURCE_GROUP_NAME \
--name $ACA_NAME \
--image $TODO_QUARKUS_IMAGE_TAG \
--environment $ACA_ENV \
--registry-server $LOGIN_SERVER \
--registry-identity system \
--target-port 8080 \
--ingress 'external' \
--min-replicas 1
Успешные выходные данные — это объект JSON, включая свойство "type": "Microsoft.App/containerApps".
Затем подключите экземпляр гибкого сервера База данных Azure для PostgreSQL к приложению контейнера с помощью соединителя службы, выполнив следующие действия.
Установите расширение service Connector без пароля для Azure CLI с помощью следующей команды:
az extension add --name serviceconnector-passwordless --upgrade --allow-preview trueПодключите базу данных к приложению-контейнеру с управляемым удостоверением, назначаемым системой, с помощью следующей команды:
az containerapp connection create postgres-flexible \ --resource-group $RESOURCE_GROUP_NAME \ --name $ACA_NAME \ --target-resource-group $RESOURCE_GROUP_NAME \ --server $DB_SERVER_NAME \ --database $DB_NAME \ --system-identity \ --container $ACA_NAMEУспешные выходные данные — это объект JSON, включая свойство
"type": "microsoft.servicelinker/linkers".
Получите полный URL-адрес для доступа к приложению Todo с помощью следующей команды:
export QUARKUS_URL=https://$(az containerapp show \
--resource-group $RESOURCE_GROUP_NAME \
--name $ACA_NAME \
--query properties.configuration.ingress.fqdn -o tsv)
echo $QUARKUS_URL
Откройте новый веб-браузер со значением ${QUARKUS_URL}. Если веб-страница не отображается правильно, подождите некоторое время и обновите страницу.
Затем добавьте новый элемент todo с текстом Deployed the Todo app to Container Apps. Выберите этот элемент, чтобы пометить его как завершенный.
Доступ к API RESTful (/api) для получения всех элементов todo, хранящихся в База данных Azure для PostgreSQL, как показано в следующем примере:
curl --verbose -k ${QUARKUS_URL}/api | jq .
Выходные данные должны выглядеть следующим образом:
* Connected to <aca-name>.<random-id>.eastus.azurecontainerapps.io (20.231.235.79) port 443 (#0)
> GET /api HTTP/2
> Host: <aca-name>.<random-id>.eastus.azurecontainerapps.io
> user-agent: curl/7.88.1
> accept: */*
>
< HTTP/2 200
< content-length: 88
< content-type: application/json;charset=UTF-8
<
[
{
"id": 1,
"title": "Deployed the Todo app to Container Apps",
"completed": true,
"order": 1,
"url": null
}
]
Убедитесь, что база данных обновлена
Используйте следующую команду, чтобы убедиться, что база данных обновлена с новым элементом todo:
export ACCESS_TOKEN=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken)
az postgres flexible-server execute \
--admin-user $ENTRA_ADMIN_NAME \
--admin-password $ACCESS_TOKEN \
--name $DB_SERVER_NAME \
--database-name $DB_NAME \
--querytext "select * from todo;"
Если вам будет предложено установить расширение, ответ Y.
Выходные данные должны выглядеть примерно так, как показано в следующем примере, и должен содержать тот же элемент в графическом интерфейсе приложения Todo, показанном ранее:
Successfully connected to <DB_SERVER_NAME>.
Ran Database Query: 'select * from todo;'
Retrieving first 30 rows of query output, if applicable.
Closed the connection to <DB_SERVER_NAME>
[
{
"completed": true,
"id": 1,
"ordering": 1,
"title": "Deployed the Todo app to Container Apps",
"url": null
}
]
По завершении удалите правило брандмауэра, позволяющее локальному IP-адресу получить доступ к гибкому экземпляру сервера Базы данных Azure для PostgreSQL с помощью следующей команды:
az postgres flexible-server firewall-rule delete \
--resource-group $RESOURCE_GROUP_NAME \
--name $DB_SERVER_NAME \
--rule-name $DB_SERVER_NAME-database-allow-local-ip \
--yes
Очистка ресурсов
Чтобы избежать расходов за использование Azure, необходимо удалить ненужные ресурсы. Если кластер больше не нужен, используйте команду az group delete для удаления группы ресурсов, службы контейнеров, реестра контейнеров и всех связанных ресурсов.
git reset --hard
docker rmi ${TODO_QUARKUS_IMAGE_TAG}
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
Вы также можете использовать для docker rmi удаления образов контейнеров, postgres созданных testcontainers в режиме разработки Quarkus.