Поделиться через


Создание переменных среды для 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 upaz containerapp createCLI или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>

Следующие шаги