다음을 통해 공유


Azure Container Apps에 Java Spring Boot 앱 배포

이 문서에서는 Microsoft Entra 계정으로 로그인하여 Java Spring Boot 앱을 Azure Container Apps에 배포하는 방법을 보여줍니다.

이 문서에서는 로컬로 실행 탭만 사용하여 다음 문서 중 하나를 완료했으며 이제 Azure에 배포하려고 합니다. 이러한 지침은 다음 문서의 Azure에 배포 탭에 있는 지침과 동일합니다.

필수 조건

  • Azure 계정. 아직 없는 경우 무료 계정을 만들 수 있습니다. 계속하려면 Azure 구독에 대한 Contributor 또는 Owner 권한이 필요합니다. 자세한 내용은 Azure Portal을 사용하여 Azure 역할 할당을 참조하십시오.
  • Azure CLI
  • Azure Container Apps CLI 확장, 버전 0.3.47 이상 최신 버전을 설치하려면 명령을 사용합니다 az extension add --name containerapp --upgrade --allow-preview .
  • Java 개발 키트 버전 17 이상.
  • Maven

Spring 프로젝트 준비

다음 단계를 수행하여 프로젝트를 준비합니다.

  1. 다음 Maven 명령을 사용하여 프로젝트를 빌드합니다.

    mvn clean verify
    
  2. 다음 명령을 사용하여 샘플 프로젝트를 로컬로 실행합니다.

    mvn spring-boot:run
    

설정

CLI에서 Azure에 로그인하려면 다음 명령을 실행하고 프롬프트에 따라 인증 프로세스를 완료합니다.

az login

최신 버전의 CLI를 실행하고 있는지 확인하려면 업그레이드 명령을 실행합니다.

az upgrade

그런 다음 CLI용 Azure Container Apps 확장을 설치하거나 업데이트합니다.

Azure CLI에서 명령을 실행할 az containerapp 때 누락된 매개 변수에 대한 오류가 발생하는 경우 최신 버전의 Azure Container Apps 확장이 설치되어 있는지 확인합니다.

az extension add --name containerapp --upgrade

참고 항목

2024년 5월부터 Azure CLI 확장 기능은 기본적으로 미리 보기 기능을 사용하도록 설정하지 않습니다. Container Apps 미리 보기 기능에 액세스하려면 --allow-preview true를 사용하여 Container Apps 확장을 설치합니다.

az extension add --name containerapp --upgrade --allow-preview true

이제 현재 확장 또는 모듈이 설치되었으므로 Microsoft.AppMicrosoft.OperationalInsights 네임스페이스를 등록합니다.

참고 항목

Azure Container Apps 리소스가 Microsoft.Web 네임스페이스에서 Microsoft.App 네임스페이스로 마이그레이션되었습니다. 자세한 내용은 2022년 3월 Microsoft.Web에서 Microsoft.App으로 네임스페이스 마이그레이션을 참조하세요.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Azure Container Apps 환경 만들기

이제 Azure CLI 설정이 완료되었으므로 이 문서 전체에서 사용되는 환경 변수를 정의할 수 있습니다.

bash 셸에서 다음 변수를 정의합니다.

export RESOURCE_GROUP="ms-identity-containerapps"
export LOCATION="canadacentral"
export ENVIRONMENT="env-ms-identity-containerapps"
export API_NAME="ms-identity-api"
export JAR_FILE_PATH_AND_NAME="./target/ms-identity-spring-boot-webapp-0.0.1-SNAPSHOT.jar"

리소스 그룹을 만듭니다.

az group create  \
    --name $RESOURCE_GROUP \
    --location $LOCATION \

자동 생성된 Log Analytics 작업 영역을 사용하여 환경을 만듭니다.

az containerapp env create \
    --name $ENVIRONMENT \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION

컨테이너 앱 환경의 기본 도메인을 표시합니다. 이후 섹션에서 사용할 이 도메인을 적어둡니다.

az containerapp env show \
    --name $ENVIRONMENT \
    --resource-group $RESOURCE_GROUP \
    --query properties.defaultDomain

배포를 위한 앱 준비

Azure Container Apps에 애플리케이션을 배포하면 리디렉션 URL이 Azure Container Apps에 배포된 앱 인스턴스의 리디렉션 URL로 변경됩니다. 다음 단계를 사용하여 application.yml 파일에서 이러한 설정을 변경합니다.

  1. 다음 예제와 같이 앱의 src\main\resources\application.yml 파일로 이동하고 배포된 앱의 도메인 이름으로 값을 post-logout-redirect-uri 변경합니다. 실제 값으로 <default-domain-of-container-app-environment> 바꾸어 <API_NAME> 야 합니다. 예를 들어 이전 단계의 Azure Container App 환경 및 ms-identity-api 앱 이름에 대한 기본 도메인을 사용하여 값에 post-logout-redirect-uri 사용합니다https://ms-identity-api.<default-domain>.

    post-logout-redirect-uri: https://<API_NAME>.<default-domain-of-container-app-environment>
    
  2. 이 파일을 저장한 후 다음 명령을 사용하여 앱을 다시 빌드합니다.

    mvn clean package
    

Important

애플리케이션의 application.yml 파일은 현재 매개 변수에 클라이언트 암호 client-secret 의 값을 보유합니다. 이 파일에 이 값을 유지하는 것은 좋지 않습니다. Git 리포지토리에 파일을 커밋하는 경우에도 위험을 감수할 수 있습니다. 권장되는 방법은 Azure Container Apps의 비밀 관리를 참조 하세요.

Microsoft Entra ID 앱 등록 업데이트

리디렉션 URI가 Azure Container Apps에서 배포된 앱으로 변경되므로 Microsoft Entra ID 앱 등록에서도 리디렉션 URI를 변경해야 합니다. 다음 단계에 따라 이 변경을 수행합니다.

  1. 개발자용 Microsoft ID 플랫폼의 앱 등록 페이지로 이동합니다.

  2. 검색 상자를 사용하여 앱 등록을 검색합니다(예: .) java-servlet-webapp-authentication.

  3. 이름을 선택하여 앱 등록을 엽니다.

  4. 메뉴에서 인증을 선택합니다.

  5. - 리디렉션 URI 섹션에서 URI 추가를 선택합니다.

  6. 앱의 URI를 입력하고 /login/oauth2/code/ 추가합니다(예 https://<containerapp-name>.<default domain of container app environment>/login/oauth2/code/: .).

  7. 저장을 선택합니다.

앱 배포하기

Azure Container Apps에 JAR 패키지를 배포합니다.

참고 항목

필요한 경우 Java 빌드 환경 변수에서 JDK 버전을 지정할 수 있습니다. 자세한 내용은 Azure Container Apps에서 Java용 빌드 환경 변수를 참조 하세요.

이제 az containerapp up CLI 명령을 사용하여 WAR 파일을 배포할 수 있습니다.

az containerapp up \
    --name $API_NAME \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION \
    --environment $ENVIRONMENT \
    --artifact <JAR_FILE_PATH_AND_NAME> \
    --ingress external \
    --target-port 8080 \
    --query properties.configuration.ingress.fqdn

참고 항목

기본 JDK 버전은 17입니다. 애플리케이션과의 호환성을 위해 JDK 버전을 변경해야 하는 경우 --build-env-vars BP_JVM_VERSION=<YOUR_JDK_VERSION> 인수를 사용하여 버전 번호를 조정할 수 있습니다.

더 많은 빌드 환경 변수는 Azure Container Apps에서 Java용 빌드 환경 변수를 참조 하세요.

앱 유효성 검사

이 예제 containerapp up 에서 명령은 앱의 --query properties.configuration.ingress.fqdn URL이라고도 하는 FQDN(정규화된 도메인 이름)을 반환하는 인수를 포함합니다. 다음 단계를 수행하여 앱의 로그를 확인해 배포 문제를 조사합니다.

  1. 배포 섹션의 출력 페이지에서 출력 애플리케이션 URL액세스합니다.

  2. Azure Container Apps 인스턴스 개요 페이지의 탐색 창에서 로그를 선택하여 앱의 로그를 확인합니다.

자세한 정보

다음 단계

자세한 내용 및 기타 배포 옵션은 다음 문서를 참조하세요.