Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как запустить Open Liberty в приложениях контейнеров Azure. В этой статье вы выполняете следующие действия:
- Запустите приложение Java, Java Enterprise Edition (EE), Jakarta EE или MicroProfile в среде выполнения Open Liberty.
- Создайте образ Docker приложения с помощью образов контейнеров Liberty.
- Разверните контейнерное приложение в приложениях контейнеров Azure.
Дополнительные сведения об Open Liberty см. на странице проекта Open Liberty . Эта статья предназначена для того, чтобы помочь вам быстро перейти к развертыванию. Прежде чем перейти к производству, вам следует ознакомиться с Tuning Liberty.
Если вы заинтересованы в предоставлении отзывов или тесной работе с сценариями миграции с помощью команды разработчиков, разрабатывающей решения Java в Azure, заполните этот короткий опрос по миграции Azure и включите контактные данные. Команда руководителей программ, архитекторов и инженеров будет быстро связаться с вами, чтобы начать тесное сотрудничество.
Предварительные условия
- Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начать работу.
- Подготовьте локальный компьютер с установленной операционной системой Windows или Unix, например Ubuntu, macOS или подсистема Windows для Linux.
-
Установите Azure CLI версии 2.62.0 или новее для выполнения команд Azure CLI.
- При появлении запроса установите расширение Azure CLI при первом использовании. Дополнительные сведения о расширениях см. в статье "Использование расширений и управление ими" с помощью Azure CLI.
- Запустите
az version, чтобы найти установленные версии и зависимые библиотеки. Чтобы обновить до последней версии, запуститеaz upgrade.
- Установите реализацию Java Standard Edition (SE) версии 17 — например, версию сборки Microsoft OpenJDK.
- Установите Maven 3.9.8 или более поздней версии.
- Убедитесь, что установлен Git .
Вход в Azure
Войдите в подписку Azure с помощью команды az login и следуйте инструкциям на экране.
az login
Примечание.
Большинство команд Azure CLI можно выполнять в PowerShell так же, как и в Bash. Разница существует только при использовании переменных. В следующих разделах разница рассматривается на разных вкладках при необходимости.
Если у вас несколько клиентов Azure, связанных с учетными данными Azure, необходимо указать, в какой клиент вы хотите войти. Вы можете указать арендатора с помощью параметра --tenant, например, az login --tenant contoso.onmicrosoft.com.
Если у вас есть несколько подписок в одном клиенте, убедитесь, что вы выполнили вход с тем, с которым вы собираетесь работать, с помощью az account set --subscription <subscription-id>.
Создание группы ресурсов
Группа ресурсов Azure — это логическая группа, в которой развертываются и управляются ресурсы Azure.
Создайте группу ресурсов с именем java-liberty-project с помощью команды az group create в расположении eastus2. Эта группа ресурсов используется позже для создания экземпляра реестра контейнеров Azure (ACR) и экземпляра приложений контейнеров Azure.
export RESOURCE_GROUP_NAME=java-liberty-project
export LOCATION=eastus2
az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
Создать экземпляр ACR
Используйте команду az acr create для создания экземпляра ACR. В следующем примере создается экземпляр ACR с именем youruniqueacrname. Убедитесь, что youruniqueacrname уникальна в Azure.
Примечание.
В этой статье используется рекомендуемый механизм проверки подлинности без пароля для реестра контейнеров. По-прежнему можно использовать имя пользователя и пароль с docker login после получения имени пользователя и пароля с помощью az acr credential show. Использование имени пользователя и пароля менее безопасно, чем проверка подлинности без пароля.
export REGISTRY_NAME=youruniqueacrname
az acr create \
--resource-group $RESOURCE_GROUP_NAME \
--name $REGISTRY_NAME \
--sku Basic
Через некоторое время вы увидите выходные данные JSON, содержащие следующие строки:
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "java-liberty-project",
Затем используйте следующую команду, чтобы получить сервер входа для экземпляра реестра контейнеров. Это значение необходимо при развертывании образа приложения в приложениях контейнеров Azure позже.
export ACR_LOGIN_SERVER=$(az acr show \
--resource-group $RESOURCE_GROUP_NAME \
--name $REGISTRY_NAME \
--query 'loginServer' \
--output tsv)
Создать среду
Среда в Azure Container Apps создает безопасную границу вокруг группы приложений-контейнеров. Развертываемые в одной среде приложения-контейнеры развертываются в одной виртуальной сети и записывают журналы в одну рабочую область Log Analytics. Используйте команду az containerapp env create для создания среды. В следующем примере создается среда с именем youracaenvname:
export ACA_ENV=youracaenvname
az containerapp env create \
--resource-group $RESOURCE_GROUP_NAME \
--location $LOCATION \
--name $ACA_ENV
Если вам будет предложено установить расширение, ответ Y.
Через некоторое время вы увидите выходные данные JSON, содержащие следующие строки:
"provisioningState": "Succeeded",
"type": "Microsoft.App/managedEnvironments"
"resourceGroup": "java-liberty-project",
Создание одной базы данных в Базе данных SQL Azure
В этом разделе описано, как создать одну базу данных в Базе данных SQL Azure для использования с приложением.
Во-первых, используйте следующие команды, чтобы задать переменные среды, связанные с базой данных. Замените <your-unique-sql-server-name> уникальным именем сервера Базы данных SQL Azure.
export SQL_SERVER_NAME=<your-unique-sql-server-name>
export DB_NAME=demodb
Затем используйте следующие команды, чтобы создать отдельную базу данных в Базе данных SQL Azure и задать текущего пользователя, выполнившего вход в систему, в качестве администратора Microsoft Entra. Дополнительные сведения см. в кратком руководстве по . Создание одной базы данных — база данных SQL Azure.
export ENTRA_ADMIN_NAME=$(az account show --query user.name --output tsv)
az sql server create \
--name $SQL_SERVER_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--enable-ad-only-auth \
--external-admin-principal-type User \
--external-admin-name $ENTRA_ADMIN_NAME \
--external-admin-sid $(az ad signed-in-user show --query id --output tsv)
az sql db create \
--resource-group $RESOURCE_GROUP_NAME \
--server $SQL_SERVER_NAME \
--name $DB_NAME \
--edition GeneralPurpose \
--compute-model Serverless \
--family Gen5 \
--capacity 2
Затем используйте следующие команды, чтобы добавить локальный IP-адрес в правила брандмауэра сервера базы данных SQL Azure, чтобы разрешить локальному компьютеру подключаться к базе данных для локального тестирования позже.
export AZ_LOCAL_IP_ADDRESS=$(curl -s https://whatismyip.akamai.com)
az sql server firewall-rule create \
--resource-group $RESOURCE_GROUP_NAME \
--server $SQL_SERVER_NAME \
--name AllowLocalIP \
--start-ip-address $AZ_LOCAL_IP_ADDRESS \
--end-ip-address $AZ_LOCAL_IP_ADDRESS
Примечание.
Вы создаете сервер SQL Azure с проверкой подлинности SQL, отключенной для обеспечения безопасности. Только идентификатор Microsoft Entra используется для проверки подлинности на сервере. Если необходимо включить проверку подлинности SQL, см. az sql server create.
Настройка и сборка образа приложения
Чтобы развернуть и запустить приложение Liberty в Azure Container Apps, создайте контейнер приложения в виде образа Docker с помощью образов контейнеров Open Liberty.
Выполните действия, описанные в этом разделе, чтобы развернуть пример приложения в среде выполнения Liberty. Эти шаги выполняются с использованием Maven.
Посмотрите приложение
Используйте следующие команды, чтобы подготовить пример кода для этого руководства. Пример размещен на сайте GitHub.
git clone https://github.com/Azure-Samples/open-liberty-on-aca.git
cd open-liberty-on-aca
export BASE_DIR=$PWD
git checkout 20250327
Если вы видите сообщение о detached HEAD состоянии, можно его не учитывать. Это просто означает, что вы просмотрели тег.
В этой статье используется java-app. Ниже приведена структура файлов важных файлов приложения:
java-app
├─ src/main/
│ ├─ liberty/config/
│ │ ├─ server.xml
│ ├─ java/
│ ├─ resources/
│ ├─ webapp/
├─ Dockerfile
├─ pom.xml
├─ pom-azure-identity.xml
Каталоги java, java и webapp содержат исходный код примера приложения. В коде объявлен и используется источник данных с именем jdbc/JavaEECafeDB.
В корневом каталоге java-app есть Файл Dockerfile для создания образа приложения с помощью Open Liberty.
В каталоге liberty/config файл server.xml используется для настройки подключения к базе данных для Open Liberty. Он определяет переменную azure.sql.connectionstring, которая используется для подключения к базе данных SQL Azure.
Файл pom.xml — это файл объектной модели проекта Maven( POM), содержащий сведения о конфигурации проекта. Файл pom-azure-identity.xml объявляет зависимость azure-identity, которая используется для проверки подлинности в службах Azure с помощью идентификатора Microsoft Entra.
Примечание.
В этом примере используется библиотека azure-identity для проверки подлинности в базе данных SQL Azure с помощью проверки подлинности Microsoft Entra, которая рекомендуется для обеспечения безопасности. Если вам необходимо использовать аутентификацию SQL в приложении Liberty, см. подключения к реляционной базе данных с использованием JDBC.
Сборка проекта
Чтобы создать приложение, используйте следующие команды:
cd $BASE_DIR/java-app
mvn clean install
mvn dependency:copy-dependencies -f pom-azure-identity.xml -DoutputDirectory=target/liberty/wlp/usr/shared/resources
Если сборка выполнена успешно, вы увидите выходные данные, аналогичные приведенным ниже в конце сборки.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 22.651 s
[INFO] Finished at: 2023-10-26T18:58:40-04:00
[INFO] ------------------------------------------------------------------------
Если вы не видите этот результат, обнаружьте и устраните проблему перед продолжением.
Локальное тестирование проекта
Теперь можно выполнить и протестировать проект локально перед развертыванием в Azure. Для удобства используйте liberty-maven-plugin. Дополнительные сведения о liberty-maven-plugin см. в статье Создание веб-приложения с помощью Maven. Для приложения можно сделать что-то подобное с помощью любого другого механизма, например локальной интегрированной среды разработки.
Примечание.
Если вы выбрали развертывание базы данных без сервера, убедитесь, что база данных SQL не ввела режим приостановки. Одним из способов проверки является вход в редактор запросов для базы данных, как описано в Кратком руководстве: Использование редактора запросов портала Azure (предварительная версия) для запроса базы данных SQL Azure.
Запустите приложение с помощью команды
liberty:run.cd $BASE_DIR/java-app # The value of environment variable AZURE_SQL_CONNECTIONSTRING is read by the configuration variable azure.sql.connectionstring in server.xml. export AZURE_SQL_CONNECTIONSTRING="jdbc:sqlserver://$SQL_SERVER_NAME.database.windows.net:1433;databaseName=$DB_NAME;authentication=ActiveDirectoryDefault" mvn liberty:runУбедитесь, что приложение работает должным образом. В случае успешного выполнения вы увидите сообщение, аналогичное
[INFO] [AUDIT ] CWWKZ0001I: Application javaee-cafe started in 11.086 seconds.в выходных данных команды. Перейдите кhttp://localhost:9080/в браузере, чтобы убедиться, что приложение доступно и все функции работают.Нажмите клавиши CTRL+C, чтобы остановиться. Выберите Y, если вам будет предложено завершить пакетное задание.
По завершении удалите правило брандмауэра, позволяющее локальному IP-адресу получить доступ к базе данных SQL Azure с помощью следующей команды:
az sql server firewall-rule delete \
--resource-group $RESOURCE_GROUP_NAME \
--server $SQL_SERVER_NAME \
--name AllowLocalIP
Создание образа для развертывания приложений контейнеров Azure
Теперь можно выполнить az acr build команду для сборки образа, как показано в следующем примере:
cd $BASE_DIR/java-app
az acr build \
--registry ${REGISTRY_NAME} \
--image javaee-cafe:v1 \
.
Команда az acr build отправляет артефакты, указанные в Dockerfile, в экземпляр реестра контейнеров, создает образ и сохраняет его в экземпляре реестра контейнеров.
Развертывание приложения в Azure Container Apps
Используйте следующие команды, чтобы создать экземпляр Azure Container Apps для запуска приложения после извлечения образа из ACR. В этом примере создается экземпляр приложений контейнеров Azure с именем youracainstancename:
export ACA_NAME=youracainstancename
az containerapp create \
--resource-group $RESOURCE_GROUP_NAME \
--name $ACA_NAME \
--image ${ACR_LOGIN_SERVER}/javaee-cafe:v1 \
--environment $ACA_ENV \
--registry-server $ACR_LOGIN_SERVER \
--registry-identity system \
--target-port 9080 \
--ingress 'external' \
--min-replicas 1
Успешные выходные данные — это объект JSON, включая свойство "type": "Microsoft.App/containerApps".
Затем подключите сервер базы данных SQL Azure к приложению контейнера с помощью соединителя службы, выполнив следующие действия.
- Откройте портал Azure в браузере и перейдите к экземпляру приложений контейнеров Azure, созданному на предыдущем шаге.
- В области навигации выберите Настройки>Service Connector (предварительная версия).
- Выберите Создать. Откроется всплывающее окно "Создание подключения".
- В области "Базовый" для типа службы выберите базу данных SQL. Для типа клиента выберите Java. Оставьте другие поля в значениях по умолчанию, а затем нажмите кнопку "Далее: проверка подлинности".
- В области проверки подлинности в качестве типа проверки подлинности выберите управляемое удостоверение, назначенное системой, а затем нажмите кнопку "Далее: Сеть".
- В области "Сеть" нажмите кнопку "Далее: просмотр и создание".
- В области "Проверка и создание " дождитесь прохождения проверки и нажмите кнопку "Создать" в Cloud Shell. Cloud Shell открывается, а затем выполняет команды для создания подключения. Дождитесь завершения команд, а затем закройте Cloud Shell.
Примечание.
Коннектор службы создает секрет в приложении-контейнере, который содержит значение для AZURE_SQL_CONNECTIONSTRING, представляющего собой строку подключения без необходимости ввода пароля к базе данных Azure SQL. Дополнительные сведения см. в образце значения из раздела о назначаемой пользователем управляемой идентичности в разделеИнтеграция базы данных Azure SQL с соединителем службы.
Тестирование приложения
Чтобы получить полный URL-адрес для доступа к приложению, используйте следующую команду:
echo https://$(az containerapp show \
--resource-group $RESOURCE_GROUP_NAME \
--name $ACA_NAME \
--query properties.configuration.ingress.fqdn \
--output tsv)
Чтобы получить доступ к приложению и протестировать его, откройте веб-браузер по URL-адресу. На следующем снимка экрана показано работающее приложение:
Очистка ресурсов
Чтобы избежать расходов за использование Azure, необходимо удалить ненужные ресурсы. Если кластер больше не нужен, используйте команду az group delete, чтобы удалить группу ресурсов, реестр контейнеров, приложения контейнеров, сервер базы данных и все связанные ресурсы.
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
Следующие шаги
Вы можете узнать больше из источников, использованных в этом руководстве.
- Приложения контейнеров Azure
- Интеграция базы данных SQL Azure с коннектором службы
- Подключитесь, используя аутентификацию Microsoft Entra
- Open Liberty
- Настройка сервера Open Liberty
- Плагин Liberty Maven
- Образы контейнеров Open Liberty
Сведения о возможностях запуска продуктов WebSphere в Azure см. в статье "Что такое решения для запуска семейства продуктов WebSphere в Azure?"