다음을 통해 공유


Azure Container Apps에서 Java용 환경 변수 빌드(미리 보기)

Azure Container Apps는 빌드팩을 사용하여 소스 코드에서 클라우드로 직접 배포할 수 있는 컨테이너 이미지를 자동으로 만듭니다. 빌드 구성을 제어하려면 환경 변수를 사용하여 JDK, Maven, Tomcat과 같은 빌드 부분을 사용자 지정할 수 있습니다. 다음 문서에서는 컨테이너를 자동으로 만드는 빌드를 제어하는 ​​데 도움이 되는 환경 변수를 구성하는 방법을 보여 줍니다.

지원되는 Java 빌드 환경 변수

JDK 구성

Container Apps는 OpenJDK의 Microsoft 빌드를 사용하여 소스 코드를 빌드하고 런타임 환경으로 사용합니다. 4가지 LTS JDK 버전(8, 11, 17, 21)이 지원됩니다.

  • 소스 코드 빌드의 경우 기본 버전은 JDK 17입니다.

  • JAR 파일 빌드의 경우 JDK 버전은 JAR의 파일 위치 META-INF\MANIFEST.MF에서 읽히지만 지정된 버전을 사용할 수 없는 경우 기본 JDK 버전 17을 사용합니다.

JDK를 구성하는 데 사용되는 환경 변수 목록은 다음과 같습니다.

환경 변수 설명 기본값
BP_JVM_VERSION JVM 버전을 제어합니다. 17

Maven 구성

Container Apps는 원본에서 Maven 기반 애플리케이션 빌드를 지원합니다.

다음은 Maven을 구성하는 데 사용되는 환경 변수 목록입니다.

빌드 환경 변수 설명 기본값
BP_MAVEN_VERSION 주요 Maven 버전을 설정합니다. Buildpack은 지원되는 각 라인의 단일 버전만 제공하므로 빌드팩 업데이트로 설치된 Maven의 정확한 버전이 변경될 수 있습니다. Maven의 특정 부/패치 버전이 필요한 경우 대신 Maven 래퍼를 사용합니다. 3
BP_MAVEN_BUILD_ARGUMENTS Maven에 전달되는 인수를 정의합니다. TTY가 없는 환경에서는 --batch-mode가 인수 목록 앞에 추가됩니다. -Dmaven.test.skip=true --no-transfer-progress package
BP_MAVEN_ADDITIONAL_BUILD_ARGUMENTS Maven에 전달하기 위해 사용되는 추가 인수(예: BP_MAVEN_BUILD_ARGUMENTS에 추가된 -DskipJavadoc)를 정의합니다.
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 Maven 대신 Apache maven-mvnd의 설치 및 구성을 트리거합니다. Maven 디먼을 사용하려면 이 값을 true로 설정합니다. false
BP_MAVEN_SETTINGS_PATH Maven의 settings.xml 파일에 대한 사용자 지정 위치를 ​​지정합니다.
BP_INCLUDE_FILES 원본 파일과 일치하도록 콜론으로 구분된 GLOB 패턴 목록입니다. 일치하는 모든 파일은 최종 이미지에 보존됩니다.
BP_EXCLUDE_FILES 원본 파일과 일치하도록 콜론으로 구분된 GLOB 패턴 목록입니다. 일치하는 파일은 최종 이미지에서 제거됩니다. 모든 포함 패턴이 먼저 적용되며 "제외 패턴"을 사용하여 빌드에 포함된 파일을 줄일 수 있습니다.
BP_JAVA_INSTALL_NODE 별도의 Buildpack이 Yarn 및 Node.js를 설치할지 여부를 제어합니다. true로 설정한 경우 Buildpack은 BP_NODE_PROJECT_PATH에서 설정한 앱 루트 또는 경로를 확인합니다. 프로젝트 경로는 Yarn 및 Node.js 설치가 필요한 yarn.lock 파일을 찾습니다. package.json 파일이 있는 경우 빌드에는 Node.js만 필요합니다. false
BP_NODE_PROJECT_PATH 프로젝트 하위 디렉터리에 package.jsonyarn.lock 파일을 찾도록 지시합니다.

Tomcat 구성

Container Apps는 Tomcat 애플리케이션 서버에서 war 파일 실행을 지원합니다.

Tomcat을 구성하는 데 사용되는 환경 변수 목록은 다음과 같습니다.

빌드 환경 변수 설명 기본값
BP_TOMCAT_CONTEXT_PATH 애플리케이션이 탑재되는 컨텍스트 경로. 기본적으로 비어 있음(ROOT)
BP_TOMCAT_EXT_CONF_SHA256 외부 구성 패키지의 SHA256 해시.
BP_TOMCAT_ENV_PROPERTY_SOURCE_DISABLED true로 설정하면 Buildpack이 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.*

Cloud Build 서비스 구성

Cloud Build 서비스를 구성하는 데 사용되는 환경 변수 목록은 다음과 같습니다.

빌드 환경 변수 설명 기본값
ORYX_DISABLE_TELEMETRY 원격 분석 컬렉션을 사용하지 않도록 설정할지 여부를 제어합니다. false

Java 빌드 환경 변수를 구성하는 방법

참고 항목

다음 CLI 명령을 실행하려면 Container Apps 확장 버전 0.3.47 이상을 사용합니다. az extension add --name containerapp --upgrade --allow-preview 명령을 사용하여 최신 버전을 설치하세요.

CLI 명령 az containerapp up, az containerapp create 또는 az containerapp update를 통해 Java 애플리케이션 소스 코드를 배포할 때 Java 빌드 환경 변수를 구성할 수 있습니다.

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"

Azure Container Apps에서 Azure CLI를 사용하여 GitHub Actions를 설정할 때 Java 빌드 환경 변수를 구성할 수도 있습니다.

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>

다음 단계