Azure Spring Apps 엔터프라이즈 플랜에서 다국어 앱을 배포하는 방법

참고 항목

Azure Spring Apps는 Azure Spring Cloud 서비스의 새 이름입니다. 서비스에 새 이름이 지정되었지만, 자산을 업데이트하는 동안 스크린샷, 비디오, 다이어그램과 같은 일부 위치에서는 당분간 이전 이름이 표시됩니다.

이 문서의 적용 대상:❌ 기본/표준 ✔️ 엔터프라이즈

이 문서에서는 Azure Spring Apps 엔터프라이즈 플랜에서 다국어 앱을 배포하는 방법과 이러한 다국어 앱이 빌드팩에서 제공하는 빌드 서비스 기능을 사용할 수 있는 방법을 보여줍니다.

필수 조건

서비스 인스턴스에 다국어 애플리케이션 배포

이 섹션은 빌드 서비스를 사용하도록 설정한 경우 다국어 애플리케이션을 빌드하고 배포하는 데 적용됩니다. 빌드 서비스를 사용하지 않도록 설정하면 사용자 지정 컨테이너 이미지를 통해서만 애플리케이션을 배포할 수 있습니다. 사용자 고유의 이미지를 만들거나 Azure Spring Apps 엔터프라이즈 인스턴스에서 빌드한 이미지를 사용할 수 있습니다. 자세한 내용은 사용자 지정 컨테이너 이미지를 사용하여 애플리케이션 배포를 참조하세요.

작성기 관리

Azure Spring Apps 엔터프라이즈 인스턴스를 만들 때, 지원되는 다음 언어 패밀리 빌드팩 중 하나에서 기본 작성기를 선택해야 합니다.

자세한 내용은 VMware Tanzu용 언어 패밀리 빌드팩을 참조하세요.

이러한 빌드팩은 Java, .NET Core, Go, 웹 정적 파일, Node.js 및 Python 앱용 소스 코드 또는 아티팩트를 사용하여 빌드할 수 있습니다. 작성기를 만들거나 보는 동안 빌드팩 버전을 볼 수도 있습니다. 또한 빌드팩 및 스택을 지정하여 사용자 지정 작성기를 만들 수 있습니다.

Azure Spring Apps 서비스 인스턴스에서 구성한 모든 작성기는 다음 스크린샷처럼 빌드 서비스 페이지에 표시됩니다.

작성기 목록이 강조 표시된 빌드 서비스 페이지를 보여 주는 Azure Portal의 스크린샷.

추가를 선택하여 새 작성기를 만듭니다. 다음 스크린샷에서는 사용자 지정 작성기를 만드는 데 사용해야 하는 리소스를 보여 줍니다. OS 스택에는 Bionic Base, Bionic Full, Jammy Tiny, Jammy BaseJammy Full이 포함되어 있습니다. Bionic은 Ubuntu 18.04 (Bionic Beaver) 기반이며 Jammy는 Ubuntu 22.04 (Jammy Jellyfish) 기반입니다. 자세한 내용은 OS 스택 권장 사항을 참조하세요.

VMware에서 Bionic OS Stack을 사용 중단할 예정이므로 Jammy OS Stack을 사용하여 작성기를 만드는 것이 좋습니다.

OS 스택 및 선택한 buildpack 이름이 강조 표시된 작성기 추가 페이지를 보여 주는 Azure Portal의 스크린샷.

작성기가 배포에 사용되지 않는 경우 사용자 지정 작성기를 편집할 수도 있습니다. 빌드팩 또는 OS 스택을 업데이트할 수 있지만, 작성기 이름은 읽기 전용입니다.

줄임표 단추와 작성기 편집 메뉴 옵션이 강조 표시된 빌드 서비스 페이지를 보여주는 Azure Portal의 스크린샷.

작성기는 배포에 지속적으로 기여하는 리소스입니다. 이 스택은 최신 런타임 이미지 및 최신 빌드팩을 제공합니다.

작성기에서 기존 활성 배포를 빌드하는 경우 작성기를 삭제할 수 없습니다. 이 상태에서 작성기를 삭제하려면 다음 단계를 수행합니다.

  1. 구성을 새 작성기로 저장합니다.
  2. 새 작성기를 사용하여 앱을 배포합니다. 배포된 앱은 새 작성기로 연결됩니다.
  3. 이전 작성기에서 배포한 앱을 새 작성기로 마이그레이션합니다.
  4. 원래 작성기를 삭제합니다.

OS 스택 권장 사항

VMware에서 Bioinic OS Stack을 사용 중단할 예정이므로 Azure Spring Apps에서는 Jammy OS Stack을 사용하여 작성기를 만드는 것이 좋습니다. 다음 목록은 사용 가능한 옵션입니다.

  • Jammy Tiny: 가능한 최소 크기 및 보안 공간을 위한 최소 이미지를 빌드하는 데 적합합니다. Java 네이티브 이미지를 빌드할 때와 마찬가지로 최종 컨테이너 이미지를 더 작게 만들 수 있습니다. 통합 라이브러리는 제한됩니다. 예를 들어 shell 라이브러리가 없으므로 문제 해결을 위해 앱 인스턴스에 연결할 수 없습니다.

    • 대부분의 Go 앱
    • Java 앱 Tiny에는 셸이 없으므로 bin/setenv.sh 설정과 같은 일부 Apache Tomcat 구성 옵션을 사용할 수 없습니다.
  • Jammy Base: 네이티브 확장이 없는 대부분의 앱에 적합합니다.

    • Java 앱 및 .NET Core 앱
    • 일부 C 라이브러리가 필요한 Go 앱
    • 네이티브 확장이 없는 Node.js, Python 또는 웹 서버 앱
  • Jammy Full: 대부분의 라이브러리를 포함하고 있으며 네이티브 확장이 있는 앱에 적합합니다. 예를 들어 보다 완전한 글꼴 라이브러리를 포함하고 있습니다. 앱이 네이티브 확장을 사용하는 경우 Full 스택을 사용합니다.

    • 네이티브 확장이 있는 Node.js 또는 Python 앱

자세한 내용은 VMware 설명서의 Ubuntu 스택을 참조하세요.

컨테이너 레지스트리 관리

이 섹션에서는 사용자 고유의 컨테이너 레지스트리와 함께 빌드 서비스를 사용하도록 설정하는 경우 빌드 서비스에서 사용하는 컨테이너 레지스트리를 관리하는 방법을 보여줍니다. Azure Spring Apps 관리 컨테이너 레지스트리와 함께 빌드 서비스를 사용하도록 설정하는 경우 이 섹션을 건너뛰어도 됩니다.

빌드 서비스에서 사용자 컨테이너 레지스트리를 사용하도록 설정한 후에는 Azure Portal 또는 Azure CLI를 사용하여 레지스트리를 표시하고 구성할 수 있습니다.

다음 단계에 따라 컨테이너 레지스트리를 표시, 추가, 편집 및 삭제합니다.

  1. Azure Portal을 엽니다.

  2. 탐색 창에서 컨테이너 레지스트리를 선택합니다.

  3. 추가를 선택하여 컨테이너 레지스트리를 만듭니다.

    컨테이너 레지스트리 추가 단추가 있는 컨테이너 레지스트리 페이지를 보여 주는 Azure Portal의 스크린샷.

  4. 컨테이너 레지스트리의 경우 줄임표(...) 단추를 선택한 다음, 편집을 선택하여 레지스트리 구성을 봅니다.

    컨테이너 레지스트리 페이지를 보여 주는 Azure Portal의 스크린샷.

  5. 컨테이너 레지스트리 편집 페이지에서 값을 검토합니다.

    컨테이너 레지스트리 편집 창이 열려 있는 컨테이너 레지스트리 페이지를 보여 주는 Azure Portal의 스크린샷.

  6. 컨테이너 레지스트리를 삭제하려면 줄임표(...) 단추를 선택한 다음, 삭제를 선택하여 레지스트리를 삭제합니다. 빌드 서비스에서 컨테이너 레지스트리를 사용하는 경우 컨테이너 레지스트리를 삭제할 수 없습니다.

    컨테이너 레지스트리 편집 창이 열리고 사용자 이름 및 암호 상자가 강조 표시된 컨테이너 레지스트리 페이지를 보여 주는 Azure Portal의 스크린샷.

빌드 서비스는 컨테이너 레지스트리를 사용할 수 있으며, 연결된 컨테이너 레지스트리를 변경할 수도 있습니다. 이 프로세스는 시간이 오래 걸립니다. 변경이 발생하면 빌드 서비스 아래의 모든 작성기와 빌드 리소스가 다시 빌드된 다음, 최종 컨테이너 이미지가 새 컨테이너 레지스트리로 푸시됩니다.

다음 단계에 따라 빌드 서비스와 연결된 컨테이너 레지스트리를 전환합니다.

  1. Azure Portal을 엽니다.

  2. 탐색 창에서 빌드 서비스를 선택합니다.

  3. 참조된 컨테이너 레지스트리를 선택하여 빌드 서비스에 대한 컨테이너 레지스트리를 업데이트합니다.

    참조된 컨테이너 레지스트리가 강조 표시된 빌드 서비스 페이지를 보여주는 Azure Portal의 스크린샷.

다국어 애플리케이션 빌드 및 배포

컨테이너 레지스트리를 사용하여 다음과 같은 방법으로 다국어 애플리케이션을 빌드하고 배포할 수 있습니다.

  • Azure Spring Apps 관리형 컨테이너 레지스트리를 사용하는 빌드 서비스의 경우 애플리케이션을 이미지에 빌드한 후 현재 Azure Spring Apps 서비스 인스턴스에 배포할 수 있습니다. 빌드 및 배포는 az spring app deploy 명령을 사용하여 함께 실행됩니다.

  • 사용자 관리 컨테이너 레지스트리를 사용하는 빌드 서비스의 경우 애플리케이션을 컨테이너 이미지에 빌드한 후 현재 Azure Spring Apps 엔터프라이즈 인스턴스 및 다른 인스턴스에 배포할 수 있습니다. 빌드 명령과 배포 명령이 따로 있습니다. 빌드 명령을 사용하여 빌드를 만들거나 업데이트한 다음, 배포 명령을 사용하여 컨테이너 이미지를 서비스 인스턴스에 배포할 수 있습니다.

자세한 내용은 Tanzu Build Service 사용주문형 빌드 서비스 섹션을 참조하세요.

다음 예제에서는 몇 가지 유용한 빌드 명령을 보여줍니다.

az configure --defaults group=<resource-group-name> spring=<service-name>

az spring build-service build list
az spring build-service build show --name <build-name>
az spring build-service build create --name <build-name> --artifact-path <artifact-path>
az spring build-service build update --name <build-name> --artifact-path <artifact-path>
az spring build-service build delete --name <build-name>

다음 Azure CLI 예제에서는 다음 두 가지 컨테이너 레지스트리 시나리오에 대한 아티팩트 파일을 빌드하고 배포하는 방법을 보여줍니다.

  • Azure Spring Apps 관리 컨테이너 레지스트리
  • 사용자 관리 컨테이너 레지스트리

이 예제에서는 명령 하나로 빌드하고 배포합니다. 다음 명령은 컨테이너 이미지에 애플리케이션을 빌드하는 작성기를 지정한 다음, 애플리케이션을 Azure Springs Apps 엔터프라이즈 서비스 인스턴스에 직접 배포합니다.

작성기를 지정하지 않으면 default 작성기가 사용됩니다.

az spring app deploy \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <app-name> \
    --builder <builder-name> \
    --artifact-path <path-to-your-JAR-file>

아티팩트 파일과 함께 앱을 배포하는 경우 --artifact-path를 사용하여 파일 경로를 지정합니다. JAR 및 WAR 파일 모두 허용됩니다.

Azure CLI가 WAR 패키지를 씬(thin) JAR로 검색하면 --disable-validation을 사용하여 유효성 검사를 사용하지 않도록 설정합니다.

다음 예제에서는 폴더를 지정하는 --source-path 매개 변수를 사용하여 활성 배포에 소스 코드 폴더를 배포합니다.

az spring app deploy \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <app-name> \
    --builder <builder-name> \
    --source-path <path-to-source-code>

앱을 빌드하도록 빌드 환경을 구성할 수도 있습니다. 예를 들어, Java 애플리케이션에서 BP_JVM_VERSION 빌드 환경을 사용하여 JDK 버전을 지정할 수 있습니다.

빌드 환경을 지정하려면 다음 예와 같이 --build-env를 사용합니다. 사용 가능한 빌드 환경 변수는 이 문서의 뒷부분에서 설명합니다.

다음 명령은 애플리케이션을 배포합니다.

az spring app deploy \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <app-name> \
    --build-env <key1=value1> <key2=value2> \
    --builder <builder-name> \
    --artifact-path <path-to-your-JAR-file>

각 빌드에 대해 다음 예제와 같이 빌드 리소스를 지정할 수도 있습니다.

다음 명령은 애플리케이션을 배포합니다.

az spring app deploy \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <app-name> \
    --build-env <key1=value1> <key2=value2> \
    --build-cpu <build-cpu-size> \
    --build-memory <build-memory-size> \
    --builder <builder-name> \
    --artifact-path <path-to-your-JAR-file>

기본 빌드 CPU/메모리 리소스는 1 vCPU, 2 Gi입니다. 애플리케이션에 더 적은 또는 더 많은 메모리가 필요한 경우 --build-memory를 사용하여 메모리 리소스를 지정합니다(예: 500Mi, 1Gi, 2Gi 등). 애플리케이션에 더 적은 또는 더 많은 CPU 리소스가 필요한 경우 --build-cpu를 사용하여 CPU 리소스를 지정합니다(예: 500m, 1, 2 등). 빌드의 최대 CPU/메모리 리소스 제한은 8 vCPU, 16Gi입니다.

CPU 및 메모리 리소스는 빌드 서비스 에이전트 풀 크기로 제한됩니다. 자세한 내용은 Tanzu 빌드 서비스 사용에이전트 풀 빌드 섹션을 참조하세요. 처리 빌드 리소스 할당량의 합계는 에이전트 풀 크기를 초과할 수 없습니다.

빌드 작업의 병렬 수는 에이전트 풀 크기와 각 빌드 리소스에 따라 다릅니다. 예를 들어, 빌드 리소스가 기본 1 vCPU, 2 Gi이고 에이전트 풀 크기가 6 vCPU, 12 Gi인 경우 병렬 빌드 번호는 6입니다.

다른 빌드 작업은 리소스 할당량 한도 때문에 잠시 차단됩니다.

애플리케이션은 포트 8080에서 수신 대기해야 합니다. Spring Boot 애플리케이션은 자동으로 8080을 사용하도록 SERVER_PORT를 재정의합니다.

배포를 지원하는 언어

다음 표는 각 언어에서 지원하는 기능을 나타냅니다.

기능 Java Python Node .NET Core Go 정적 파일 Java 네이티브 이미지 PHP
앱 수명 주기 관리 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
엔드포인트 할당 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Azure Monitor ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
즉시 사용 가능한 APM 통합 ✔️
파란색/녹색 배포 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
사용자 지정 도메인 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
크기 조정 - 자동 크기 조정 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
스케일링 - 수동 스케일링(인/아웃, 업/다운) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
관리 ID ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
VMware Tanzu용 API 포털 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Spring Cloud Gateway for VMware Tanzu ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Application Configuration Service for VMware Tanzu ✔️ ✔️
VMware Tanzu 서비스 레지스트리 ✔️ ✔️
App Live View for VMware Tanzu ✔️ ✔️
가상 네트워크 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
발신 IP 주소 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
E2E TLS ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
고급 문제 해결 - 스레드/힙/JFR 덤프 ✔️
사용자 고유의 스토리지 가져오기 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
리소스 커넥터와 서비스 바인딩 통합 ✔️ ✔️
가용성 영역 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
앱 수명 주기 이벤트 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
감소된 앱 크기 - 0.5 vCPU 및 512MB ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Terraform 및 Azure Pipeline Task로 앱 배포 자동화 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
일시 삭제 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
대화형 진단 환경(AppLens 기반) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
SLA ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
상태 프로브 사용자 지정 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
문제 해결을 위한 웹 셸 연결 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ️ ✔️ ✔️
원격 디버깅 ✔️

다양한 언어 앱에 대해 지원되는 구성에 대한 자세한 내용은 이 문서 뒷부분의 해당 섹션을 참조하세요.

Java 네이티브 이미지 제한 사항

네이티브 이미지는 Java 코드를 네이티브 실행 파일로 미리 컴파일하는 기술입니다. 네이티브 이미지는 즉시 시작 및 메모리 사용량 감소와 같은 다양한 이점을 제공합니다. 네이티브 이미지를 경량 컨테이너 이미지로 패키지하면 더 빠르고 효율적인 배포가 가능합니다. Closed World Optimization으로 인해 다음과 같은 제한 사항이 적용됩니다.

  • 다음 Java 기능을 실행 가능한 빌드 시간에 구성해야 합니다.
    • 동적 클래스 로드
    • 반영
    • 동적 프록시
    • JNI(Java Native Interface)
    • 직렬화
  • 바이트코드는 더 이상 런타임에 사용할 수 없으므로, JVMTI를 대상으로 하는 도구를 사용한 디버깅 및 모니터링은 불가능합니다.

다음 기능은 Java 네이티브 이미지의 제한 때문에 Azure Spring Apps에서 지원되지 않습니다. Java 네이티브 이미지와 커뮤니티가 제한 사항을 극복할 때 Azure Spring Apps에서 이러한 기능을 지원할 수 있습니다.

기능 지원되지 않는 이유
Azure Monitor GraalVM 빌드 네이티브 이미지는 JVM 메트릭을 지원하지 않습니다.
크기 조정 - 자동 크기 조정 GraalVM 빌드 네이티브 이미지는 JVM 메트릭을 지원하지 않습니다.
기본 APM 통합 APM 벤더 및 빌드 팩은 네이티브 이미지를 지원하지 않습니다.
관리 ID Azure SDK는 네이티브 이미지를 지원하지 않습니다.
고급 문제 해결 - 스레드/힙/JFR 덤프 GraalVM 빌드 네이티브 이미지는 스레드/힙/JFR 덤프를 지원하지 않습니다.
원격 디버깅 GraalVM 네이티브 이미지는 원격 디버깅을 지원하지 않습니다.
서비스 커넥터를 사용한 암호 없는 연결 Azure Java SDK는 네이티브 이미지를 지원하지 않습니다.

참고 항목

다음과 같은 다양한 언어 빌드 및 배포 구성 섹션에서 --build-env는 환경이 빌드 단계에서 사용됨을 의미합니다. --env는 환경이 런타임 단계에서 사용됨을 의미합니다.

기본 버전이 변경되면 언어 버전을 지정하는 것이 좋습니다. 예를 들어 --build-env BP_JVM_VERSION=11.* 명령을 사용하여 Java 11을 JDK 버전으로 지정합니다. 다른 언어의 경우 각 언어에 대한 다음 설명에서 환경 변수 이름을 가져올 수 있습니다.

Java 애플리케이션 배포

Java 애플리케이션 배포를 위한 빌드팩은 tanzu-buildpacks/java-azure입니다.

다음 표에는 Azure Spring Apps에서 지원되는 기능이 나열되어 있습니다.

기능 설명 Comment(설명) 환경 변수 사용
Microsoft OpenJDK를 제공합니다. JVM 버전을 구성합니다. 기본 JDK 버전은 17입니다. 현재 지원되는 버전: JDK 8, 11, 17, 21. BP_JVM_VERSION --build-env BP_JVM_VERSION=11.*
런타임 환경. Java NMT(기본 메모리 추적)의 사용하도록 설정 여부를 구성합니다. 기본값은 true입니다. JDK 8에서는 지원되지 않습니다. BPL_JAVA_NMT_ENABLED --env BPL_JAVA_NMT_ENABLED=true
Java NMT(기본 메모리 추적) 출력의 세부 수준을 구성합니다. 기본값은 요약입니다. 자세한 NMT 출력을 보려면 세부 정보로 설정합니다. BPL_JAVA_NMT_LEVEL --env BPL_JAVA_NMT_ENABLED=summary
빌드 및 런타임 시 시스템 신뢰 저장소에 CA 인증서를 추가합니다. APM 통합 및 CA 인증서를 구성하는 방법앱 빌드 및 배포에 대한 CA 인증서 구성 섹션을 참조하세요. 해당 없음 해당 없음
Application Insights, Dynatrace, Elastic, New Relic, App Dynamic APM 에이전트와 통합합니다. APM 통합 및 CA 인증서 구성 방법을 참조하세요. 해당 없음 해당 없음
Apache Tomcat 또는 TomEE로 WAR 패키지를 배포합니다. 사용할 애플리케이션 서버를 설정합니다. Tomcat을 사용하려면 tomcat으로 설정하고 TomEE를 사용하려면 tomee로 설정합니다. 기본값은 tomcat입니다. BP_JAVA_APP_SERVER --build-env BP_JAVA_APP_SERVER=tomee
Spring Boot 애플리케이션을 지원합니다. 빌드 시 이미지에 대한 Spring Cloud Bindings 지원을 제공할지 여부를 나타냅니다. 기본값은 false입니다. BP_SPRING_CLOUD_BINDINGS_DISABLED --build-env BP_SPRING_CLOUD_BINDINGS_DISABLED=false
런타임 시 바인딩에서 Spring Boot 환경 속성을 자동 구성할지 여부를 나타냅니다. 이 기능을 사용하려면 빌드 시 Spring Cloud Bindings가 이미 설치되어 있어야 합니다. 그렇지 않으면 아무 작업도 수행되지 않습니다. 기본값은 false입니다. BPL_SPRING_CLOUD_BINDINGS_DISABLED --env BPL_SPRING_CLOUD_BINDINGS_DISABLED=false
원본에서 Maven 기반 애플리케이션 빌드를 지원합니다. 다중 모듈 프로젝트에 사용됩니다. 애플리케이션 아티팩트를 찾을 모듈을 나타냅니다. 기본값은 루트 모듈(비어 있음)입니다. BP_MAVEN_BUILT_MODULE --build-env BP_MAVEN_BUILT_MODULE=./gateway
원본에서 Gradle 기반 애플리케이션 빌드를 지원합니다. 다중 모듈 프로젝트에 사용됩니다. 애플리케이션 아티팩트를 찾을 모듈을 나타냅니다. 기본값은 루트 모듈(비어 있음)입니다. BP_GRADLE_BUILT_MODULE --build-env BP_GRADLE_BUILT_MODULE=./gateway
만들어진 이미지에서 레이블 구성을 사용하도록 설정합니다. 짧은 환경 변수 이름을 사용하는 OCI 지정 레이블과 단일 환경 변수에서 공백으로 구분된 구문을 사용하는 임의 레이블을 모두 구성합니다. BP_IMAGE_LABELS
BP_OCI_AUTHORS
여기에서 환경 변수를 참조하세요.
--build-env BP_OCI_AUTHORS=<value>
JProfiler 에이전트를 통합합니다. JProfiler 지원 통합 여부를 나타냅니다. 기본값은 false입니다. BP_JPROFILER_ENABLED 빌드 단계:
--build-env BP_JPROFILER_ENABLED=true
런타임 단계:
--env BPL_JPROFILER_ENABLED=true
BPL_JPROFILER_PORT=<port> (선택 사항, 기본값: 8849)
BPL_JPROFILER_NOWAIT=true (선택 사항입니다. JProfiler가 연결되기 전에 JVM이 실행되는지 여부를 나타냅니다. 기본값은 true입니다.)
런타임 시 JProfiler 지원을 사용하도록 설정할지 여부를 나타냅니다. 기본값은 false입니다. BPL_JPROFILER_ENABLED --env BPL_JPROFILER_ENABLED=false
JProfiler 에이전트가 수신 대기하는 포트를 나타냅니다. 기본값은 8849입니다. BPL_JPROFILER_PORT --env BPL_JPROFILER_PORT=8849
JProfiler가 연결되기 전에 JVM이 실행되는지 여부를 나타냅니다. 기본값은 true입니다. BPL_JPROFILER_NOWAIT --env BPL_JPROFILER_NOWAIT=true
JRebel 에이전트를 통합합니다. 애플리케이션은 rebel-remote.xml 파일을 포함해야 합니다. 해당 없음 해당 없음
AES는 빌드 시 애플리케이션을 암호화한 다음 시작 시 암호를 해독합니다. 빌드 시 사용할 AES 키입니다. BP_EAR_KEY --build-env BP_EAR_KEY=<value>
런타임 시 사용할 AES 키입니다. BPL_EAR_KEY --env BPL_EAR_KEY=<value>
AspectJ Weaver 에이전트를 통합합니다. <APPLICATION_ROOT>/aop.xml이 있고 aspectj-weaver.*.jar가 있습니다. 해당 없음 해당 없음

.NET 애플리케이션 배포

.NET 애플리케이션 배포를 위한 빌드팩은 tanzu-buildpacks/dotnet-core입니다.

다음 표에는 Azure Spring Apps에서 지원되는 기능이 나열되어 있습니다.

기능 설명 Comment(설명) 환경 변수 사용
.NET Core 런타임 버전을 구성합니다. Net6.0, Net7.0Net8.0을 지원합니다.
runtimeconfig.json 또는 MSBuild 프로젝트 파일을 통해 구성할 수 있습니다.
기본 런타임은 6.0.*입니다.
해당 없음 해당 없음
빌드 및 런타임 시 시스템 신뢰 저장소에 CA 인증서를 추가합니다. APM 통합 및 CA 인증서를 구성하는 방법앱 빌드 및 배포에 대한 CA 인증서 구성 섹션을 참조하세요. 해당 없음 해당 없음
Dynatrace 및 New Relic APM 에이전트와 통합합니다. APM 통합 및 CA 인증서 구성 방법을 참조하세요. 해당 없음 해당 없음
만들어진 이미지에서 레이블 구성을 사용하도록 설정합니다. 짧은 환경 변수 이름을 사용하는 OCI 지정 레이블과 단일 환경 변수에서 공백으로 구분된 구문을 사용하는 임의 레이블을 모두 구성합니다. BP_IMAGE_LABELS
BP_OCI_AUTHORS
여기에서 환경 변수를 참조하세요.
--build-env BP_OCI_AUTHORS=<value>

Python 애플리케이션 배포

Python 애플리케이션 배포를 위한 빌드팩은 tanzu-buildpacks/python입니다.

다음 표에는 Azure Spring Apps에서 지원되는 기능이 나열되어 있습니다.

기능 설명 Comment(설명) 환경 변수 사용
Python 버전을 지정합니다. 3.8.*, 3.9.*, 3.10.*, 3.11.*, 3.12.* 버전을 지원합니다. 기본값은 3.10.*입니다.
빌드 중에 BP_CPYTHON_VERSION 환경 변수를 통해 버전을 지정할 수 있습니다.
BP_CPYTHON_VERSION --build-env BP_CPYTHON_VERSION=3.8.*
빌드 및 런타임 시 시스템 신뢰 저장소에 CA 인증서를 추가합니다. APM 통합 및 CA 인증서를 구성하는 방법앱 빌드 및 배포에 대한 CA 인증서 구성 섹션을 참조하세요. 해당 없음 해당 없음
만들어진 이미지에서 레이블 구성을 사용하도록 설정합니다. 짧은 환경 변수 이름을 사용하는 OCI 지정 레이블과 단일 환경 변수에서 공백으로 구분된 구문을 사용하는 임의 레이블을 모두 구성합니다. BP_IMAGE_LABELS
BP_OCI_AUTHORS
여기에서 환경 변수를 참조하세요.
--build-env BP_OCI_AUTHORS=<value>

Go 애플리케이션 배포

Go 애플리케이션 배포를 위한 빌드팩은 tanzu-buildpacks/go입니다.

다음 표에는 Azure Spring Apps에서 지원되는 기능이 나열되어 있습니다.

기능 설명 Comment(설명) 환경 변수 사용
Go 버전을 지정합니다. 1.20.*, 1.21.* 버전을 지원합니다. 기본값은 1.20.*입니다.
Go 버전은 앱의 go.mod 파일에서 자동으로 검색됩니다. 빌드 시 BP_GO_VERSION 환경 변수를 설정하여 이 버전을 재정의할 수 있습니다.
BP_GO_VERSION --build-env BP_GO_VERSION=1.20.*
여러 대상을 구성합니다. Go 빌드의 여러 대상을 지정합니다. BP_GO_TARGETS --build-env BP_GO_TARGETS=./some-target:./other-target
빌드 및 런타임 시 시스템 신뢰 저장소에 CA 인증서를 추가합니다. APM 통합 및 CA 인증서를 구성하는 방법앱 빌드 및 배포에 대한 CA 인증서 구성 섹션을 참조하세요. 해당 없음 해당 없음
Dynatrace APM 에이전트와 통합합니다. APM 통합 및 CA 인증서 구성 방법을 참조하세요. 해당 없음 해당 없음
만들어진 이미지에서 레이블 구성을 사용하도록 설정합니다. 짧은 환경 변수 이름을 사용하는 OCI 지정 레이블과 단일 환경 변수에서 공백으로 구분된 구문을 사용하는 임의 레이블을 모두 구성합니다. BP_IMAGE_LABELS
BP_OCI_AUTHORS
여기에서 환경 변수를 참조하세요.
--build-env BP_OCI_AUTHORS=<value>

Node.js 애플리케이션 배포

Node.js 애플리케이션 배포를 위한 빌드팩은 tanzu-buildpacks/nodejs입니다.

다음 표에는 Azure Spring Apps에서 지원되는 기능이 나열되어 있습니다.

기능 설명 Comment(설명) 환경 변수 사용
노드 버전을 지정합니다. 16.*, 18.*, 19.*, 20.* 버전을 지원합니다. 기본값은 20.*입니다.
애플리케이션 디렉터리 루트에서 .nvmrc 또는 .node-version 파일을 통해 노드 버전을 지정할 수 있습니다. BP_NODE_VERSION이 설정을 재정의합니다.
BP_NODE_VERSION --build-env BP_NODE_VERSION=19.*
빌드 및 런타임 시 시스템 신뢰 저장소에 CA 인증서를 추가합니다. APM 통합 및 CA 인증서를 구성하는 방법앱 빌드 및 배포에 대한 CA 인증서 구성 섹션을 참조하세요. 해당 없음 해당 없음
Dynatrace, Elastic, New Relic, App Dynamic APM 에이전트와 통합합니다. APM 통합 및 CA 인증서 구성 방법을 참조하세요. 해당 없음 해당 없음
만들어진 이미지에서 레이블 구성을 사용하도록 설정합니다. 짧은 환경 변수 이름을 사용하는 OCI 지정 레이블과 단일 환경 변수에서 공백으로 구분된 구문을 사용하는 임의 레이블을 모두 구성합니다. BP_IMAGE_LABELS
BP_OCI_AUTHORS
여기에서 환경 변수를 참조하세요.
--build-env BP_OCI_AUTHORS=<value>
Angular Live Development Server를 사용하여 Angular 애플리케이션을 배포합니다. package.json에서 ng serve를 실행하기 전에 호스트를 지정합니다(ng serve --host 0.0.0.0 --port 8080 --public-host <your application domain name>). 애플리케이션의 도메인 이름은 애플리케이션 개요 페이지의 URL 섹션에서 확인할 수 있습니다. https:// 프로토콜을 제거하고 계속합니다. BP_NODE_RUN_SCRIPTS
NODE_ENV
--build-env BP_NODE_RUN_SCRIPTS=build NODE_ENV=development

WebServer 애플리케이션 배포

WebServer 애플리케이션 배포를 위한 빌드팩은 tanzu-buildpacks/web-servers입니다.

자세한 내용은 웹 정적 파일 배포를 참조하세요.

Java 네이티브 이미지 애플리케이션 배포(미리 보기)

Java 네이티브 이미지 애플리케이션 배포용 빌드팩은 tanzu-buildpacks/java-native-image입니다.

tanzu-buildpacks/java-native-image 빌드팩을 사용하여 Spring Boot 네이티브 이미지 애플리케이션을 배포할 수 있습니다. Spring Native는 Spring Boot 애플리케이션을 네이티브 실행 파일로 컴파일할 수 있습니다. 이 빌드팩은 Liberica NIK(Native Image Kit)를 사용하여 Spring Boot 애플리케이션의 네이티브 이미지를 만들며, 이러한 애플리케이션은 완전히 지원됩니다.

Java 네이티브 이미지를 빌드할 때 빌드 환경 BP_NATIVE_IMAGEtrue로 설정해야 하며 빌드 메모리 리소스는 8Gi 이상이어야 합니다. 빌드 서비스 에이전트 풀 크기는 4 vCPU, 8 Gi 이상이어야 합니다. 자세한 내용은 Tanzu 빌드 서비스 사용에이전트 풀 빌드 섹션을 참조하세요.

네이티브 이미지를 더 작은 크기의 컨테이너 이미지로 빌드하려면 Jammy Tiny OS 스택과 함께 작성기를 사용하는 것이 좋습니다. 자세한 내용은 OS 스택 권장 사항을 참조하세요.

다음 표에는 Azure Spring Apps에서 지원되는 기능이 나열되어 있습니다.

기능 설명 Comment(설명) 환경 변수 사용
Bellsoft OpenJDK와 통합합니다. JDK 버전을 구성합니다. 현재 지원되는 버전: JDK 8, 11, 17, 20. BP_JVM_VERSION --build-env BP_JVM_VERSION=17
native-image 명령의 인수를 구성합니다. 네이티브 이미지 명령에 직접 전달할 인수입니다. 이러한 인수는 유효하고 올바른 형식이어야 합니다. 그렇지 않으면 네이티브 이미지 명령이 실패합니다. BP_NATIVE_IMAGE_BUILD_ARGUMENTS --build-env BP_NATIVE_IMAGE_BUILD_ARGUMENTS="--no-fallback"
빌드 및 런타임 시 시스템 신뢰 저장소에 CA 인증서를 추가합니다. APM 통합 및 CA 인증서 구성 방법을 참조하세요. 해당 사항 없음 해당 사항 없음
만들어진 이미지에서 레이블 구성을 사용하도록 설정합니다. 짧은 환경 변수 이름을 사용하는 OCI 지정 레이블과 단일 환경 변수에서 공백으로 구분된 구문을 사용하는 임의 레이블을 모두 구성합니다. BP_IMAGE_LABELS
BP_OCI_AUTHORS
여기에서 환경 변수를 참조하세요.
--build-env BP_OCI_AUTHORS=<value>
원본에서 Maven 기반 애플리케이션 빌드를 지원합니다. 다중 모듈 프로젝트에 사용됩니다. 애플리케이션 아티팩트를 찾을 모듈을 나타냅니다. 기본값은 루트 모듈(비어 있음)입니다. BP_MAVEN_BUILT_MODULE --build-env BP_MAVEN_BUILT_MODULE=./gateway

Java 네이티브 이미지에는 몇 가지 제한 사항이 있습니다. 자세한 내용은 Java 네이티브 이미지 제한 사항 섹션을 참조하세요.

PHP 애플리케이션 배포

PHP 애플리케이션 배포용 빌드팩은 tanzu-buildpacks/php입니다.

Tanzu PHP 빌드팩은 전체 OS 스택과만 호환됩니다. Jammy Full OS 스택에서 작성기를 사용하는 것이 좋습니다. 자세한 내용은 OS 스택 권장 사항을 참조하세요.

다음 표에는 Azure Spring Apps에서 지원되는 기능이 나열되어 있습니다.

기능 설명 Comment(설명) 환경 변수 사용
PHP 버전을 지정합니다. PHP 버전을 구성합니다. 현재 지원되는 버전: PHP 8.1.*, 8.2.*. 기본값은 8.1.*입니다. BP_PHP_VERSION --build-env BP_PHP_VERSION=8.0.*
빌드 및 런타임 시 시스템 신뢰 저장소에 CA 인증서를 추가합니다. APM 통합 및 CA 인증서를 구성하는 방법앱 빌드 및 배포에 대한 CA 인증서 구성 섹션을 참조하세요. 해당 없음 해당 없음
Dynatrace, New Relic, App Dynamic APM 에이전트와 통합합니다. APM 통합 및 CA 인증서 구성 방법을 참조하세요. 해당 없음 해당 없음
웹 서버를 선택합니다. 설정 옵션은 php-server, httpdnginx입니다. 기본값은 php-server입니다. BP_PHP_SERVER --build-env BP_PHP_SERVER=httpd
웹 디렉터리를 구성합니다. 웹 서버가 HTTPD 또는 NGINX이면 웹 디렉터리는 기본적으로 htdocs입니다. 웹 서버가 PHP 기본 제공 서버이면 웹 디렉터리는 기본적으로 /workspace입니다. BP_PHP_WEB_DIR --build-env BP_PHP_WEB_DIR=htdocs

다음 단계