Azure Container Apps 는 Buildpacks를 사용하여 소스 코드를 클라우드에 직접 배포하는 데 사용할 수 있는 컨테이너 이미지를 자동으로 만듭니다. 빌드 구성을 제어하려면 환경 변수를 사용하여 JDK, Maven 및 Tomcat과 같은 빌드 부분을 사용자 지정합니다. 다음 문서에서는 컨테이너를 자동으로 만드는 빌드를 제어하는 데 도움이 되는 환경 변수를 구성하는 방법을 보여 줍니다.
지원되는 Java 빌드 환경 변수
JDK 구성
Container Apps는 OpenJDK의 Microsoft 빌드를 사용하여 소스 코드를 빌드하고 런타임 환경으로 사용합니다. 이 서비스는 8, 11, 17 및 21의 4가지 LTS JDK 버전을 지원합니다.
소스 코드 빌드의 경우 기본 버전은 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에 전달되는 인수를 정의합니다. 인수는 --batch-mode TTY가 없는 환경의 인수 목록에 추가됩니다. |
-Dmaven.test.skip=true --no-transfer-progress package |
BP_MAVEN_ADDITIONAL_BUILD_ARGUMENTS |
Maven에 전달하기 위해 사용되는 추가 인수(예: -DskipJavadoc에 추가된 BP_MAVEN_BUILD_ARGUMENTS)를 정의합니다. |
|
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.json 및 yarn.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 서비스 구성
클라우드 빌드 서비스를 구성하는 데 사용할 수 있는 환경 변수 목록은 다음과 같습니다.
| 빌드 환경 변수 | 설명 | 기본값 |
|---|---|---|
ORYX_DISABLE_TELEMETRY |
원격 분석 컬렉션을 사용하지 않도록 설정할지 여부를 제어합니다. | false |
Java 빌드 환경 변수를 구성하는 방법
참고 항목
다음 CLI 명령을 실행하려면 Container Apps 확장 버전 0.3.47 이상을 사용합니다.
az extension add --name containerapp --upgrade --allow-preview 명령을 사용하여 최신 버전을 설치하세요.
CLI 명령을 사용하여 Java 애플리케이션 소스 코드를 배포할 때 Java 빌드 환경 변수를 구성하거나 az containerapp up다음을 수행할 수 있습니다.az containerapp createaz 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"
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>