Создание переменных среды для Java в приложениях контейнеров Azure (предварительная версия)
Приложения контейнеров Azure используют buildpacks для автоматического создания образа контейнера, который позволяет развертывать из исходного кода непосредственно в облаке. Чтобы контролировать конфигурацию сборки, можно использовать переменные среды для настройки частей сборки, таких как JDK, Maven и Tomcat. В следующей статье показано, как настроить переменные среды для контроля над сборками, которые автоматически создают контейнер.
Поддерживаемые переменные среды сборки Java
Настройка JDK
Приложения-контейнеры используют Microsoft Build openJDK для создания исходного кода и среды выполнения. Поддерживаются четыре версии JDK LTS: 8, 11, 17 и 21.
Для сборки исходного кода версия по умолчанию — JDK 17.
Для сборки JAR-файла версия JDK считывается из расположения
META-INF\MANIFEST.MF
файла в JAR-файле, но использует JDK по умолчанию версии 17, если указанная версия недоступна.
Ниже приведен список переменных среды, используемых для настройки JDK:
Переменная среды | Description | По умолч. |
---|---|---|
BP_JVM_VERSION |
Управляет версией JVM. | 17 |
Настройка Maven
Контейнерные приложения поддерживают создание приложений на основе Maven из источника.
Ниже приведен список переменных среды, используемых для настройки Maven:
Создание переменной среды | Description | По умолч. |
---|---|---|
BP_MAVEN_VERSION |
Задает основную версию Maven. Так как Buildpacks поставляет только одну версию каждой поддерживаемой строки, обновления пакета сборки могут изменить точную версию Установленной Maven. Если требуется определенная дополнительная или исправленная версия Maven, используйте вместо этого оболочку Maven. | 3 |
BP_MAVEN_BUILD_ARGUMENTS |
Определяет аргументы, переданные Maven. Список --batch-mode аргументов добавляется в список аргументов в средах без TTY. |
-Dmaven.test.skip=true --no-transfer-progress package |
BP_MAVEN_ADDITIONAL_BUILD_ARGUMENTS |
Определяет дополнительные аргументы, используемые (например, -DskipJavadoc добавленные BP_MAVEN_BUILD_ARGUMENTS в ) для передачи в Maven. |
|
BP_MAVEN_ACTIVE_PROFILES |
Разделенный запятыми список активных профилей, передаваемых в Maven. | |
BP_MAVEN_BUILT_MODULE |
Указывает артефакт приложения, содержащий модуль. По умолчанию сборка выглядит в корневом модуле. | |
BP_MAVEN_BUILT_ARTIFACT |
Расположение созданного артефакта приложения. Это значение заменяет BP_MAVEN_BUILT_MODULE переменную. Можно сопоставить один файл, несколько файлов или каталог с помощью одного или нескольких разделенных пробелов. |
target/*.[ejw]ar |
BP_MAVEN_POM_FILE |
Указывает настраиваемое расположение файла pom.xml проекта. Это значение относительно корневого каталога проекта (например, /workspace). | pom.xml |
BP_MAVEN_DAEMON_ENABLED |
Активирует установку и настройку Apache maven-mvnd вместо Maven. Присвойте этому значению значение true , если требуется управляющей программе Maven. |
false |
BP_MAVEN_SETTINGS_PATH |
Указывает настраиваемое расположение settings.xml файла Maven. | |
BP_INCLUDE_FILES |
Разделенный двоеточием список шаблонов глобов для сопоставления исходных файлов. Любой соответствующий файл сохраняется в окончательном изображении. | |
BP_EXCLUDE_FILES |
Разделенный двоеточием список шаблонов глобов для сопоставления исходных файлов. Любой соответствующий файл удаляется из окончательного образа. Все шаблоны включения применяются сначала, и вы можете использовать "исключить шаблоны" для уменьшения файлов, включенных в сборку. | |
BP_JAVA_INSTALL_NODE |
Управление установкой Yarn и Node.js отдельной сборки. Если задано значение true , сборка проверяет корневой или путь приложения, заданные по параметру BP_NODE_PROJECT_PATH . Путь проекта ищет файл yarn.lock , который требует установки Yarn и Node.js. Если есть файл package.json, сборка требует только Node.js . |
false |
BP_NODE_PROJECT_PATH |
Направляя подкаталог проекта, чтобы искать файлы package.json и yarn.lock . |
Настройка Tomcat
Контейнерные приложения поддерживают запуск war-файла на сервере приложений Tomcat.
Ниже приведен список переменных среды, используемых для настройки Tomcat:
Создание переменной среды | Description | По умолч. |
---|---|---|
BP_TOMCAT_CONTEXT_PATH |
Путь контекста, в котором подключено приложение. | Значение по умолчанию пусто (ROOT ) |
BP_TOMCAT_EXT_CONF_SHA256 |
Хэш SHA256 внешнего пакета конфигурации. | |
BP_TOMCAT_ENV_PROPERTY_SOURCE_DISABLED |
Если задано значение true , сборка не настраивает org.apache.tomcat.util.digester.EnvironmentPropertySource . Этот параметр конфигурации добавляется для поддержки загрузки конфигурации из переменных среды и ссылки на них в файлах конфигурации Tomcat. |
|
BP_TOMCAT_EXT_CONF_STRIP |
Количество уровней каталога для удаления из внешнего пакета конфигурации. | 0 |
BP_TOMCAT_EXT_CONF_URI |
URI скачивания внешнего пакета конфигурации. | |
BP_TOMCAT_EXT_CONF_VERSION |
Версия внешнего пакета конфигурации. | |
BP_TOMCAT_VERSION |
Используется для настройки определенной версии Tomcat. Поддерживаемые версии Tomcat включают 8, 9 и 10. | 9.* |
Настройка службы облачной сборки
Ниже приведен список переменных среды, используемых для настройки облачной службы сборки:
Создание переменной среды | Description | По умолч. |
---|---|---|
ORYX_DISABLE_TELEMETRY |
Определяет, следует ли отключить коллекцию данных телеметрии. | false |
Настройка переменных среды сборки Java
Примечание.
Чтобы выполнить следующие команды CLI, используйте версию 0.3.47
расширения "Приложения контейнеров" или более позднюю. az extension add --name containerapp --upgrade --allow-preview
Используйте команду, чтобы установить последнюю версию.
При развертывании исходного кода приложения Java можно настроить переменные среды сборки Java с помощью команды az containerapp up
az containerapp create
CLI илиaz containerapp update
:
az containerapp up \
--name <CONTAINER_APP_NAME> \
--source <SOURCE_DIRECTORY> \
--build-env-vars <NAME=VALUE NAME=VALUE> \
--resource-group <RESOURCE_GROUP_NAME> \
--environment <ENVIRONMENT_NAME>
Аргумент build-env-vars
— это список переменных среды для сборки, разделенных пробелами значений в key=value
формате. Ниже приведен пример списка, который можно передать в виде переменных:
BP_JVM_VERSION=21 BP_MAVEN_VERSION=4 "BP_MAVEN_BUILD_ARGUMENTS=-Dmaven.test.skip=true --no-transfer-progress package"
Вы также можете настроить переменные среды сборки Java при настройке GitHub Actions с помощью Azure CLI в приложениях контейнеров Azure.
az containerapp github-action add \
--repo-url "https://github.com/<OWNER>/<REPOSITORY_NAME>" \
--build-env-vars <NAME=VALUE NAME=VALUE> \
--branch <BRANCH_NAME> \
--name <CONTAINER_APP_NAME> \
--resource-group <RESOURCE_GROUP> \
--registry-url <URL_TO_CONTAINER_REGISTRY> \
--registry-username <REGISTRY_USER_NAME> \
--registry-password <REGISTRY_PASSWORD> \
--service-principal-client-id <appId> \
--service-principal-client-secret <password> \
--service-principal-tenant-id <tenant> \
--token <YOUR_GITHUB_PERSONAL_ACCESS_TOKEN>