Maven을 사용하여 Spring Boot 애플리케이션 배포

참고 항목

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

이 문서의 적용 대상: ✔️ Java ❌ C#

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

이 문서에서는 Azure Spring Apps Maven 플러그 인을 사용하여 애플리케이션을 구성하고 Azure Spring Apps에 배포하는 방법을 보여 줍니다.

필수 조건

Spring 프로젝트 생성

이 문서에서 사용할 Spring 프로젝트를 만들려면 다음 단계를 따릅니다.

  1. Spring Initializr로 이동하여 Azure Spring Apps에 대한 권장 종속성이 있는 샘플 프로젝트를 생성합니다. 이 링크는 다음 URL을 사용하여 기본 설정을 제공합니다.

    https://start.spring.io/#!type=maven-project&language=java&platformVersion=2.5.7&packaging=jar&jvmVersion=1.8&groupId=com.example&artifactId=hellospring&name=hellospring&description=Demo%20project%20for%20Spring%20Boot&packageName=com.example.hellospring&dependencies=web,cloud-eureka,actuator,cloud-config-client
    

    다음 이미지는 이 샘플 프로젝트에 권장되는 Spring Initializr 설정을 보여 줍니다.

    권장 설정을 보여 주는 Spring 초기화 페이지의 스크린샷.

    이 예제에서는 Java 버전 8을 사용합니다. Java 버전 11을 사용하려면 프로젝트 메타데이터에서 옵션을 변경합니다.

  2. 모든 종속성이 설정된 경우 생성을 선택합니다.

  3. 패키지를 다운로드하고 압축을 푼 다음 웹 애플리케이션용 웹 컨트롤러를 만듭니다. 다음 내용이 포함된 src/main/java/com/example/hellospring/HelloController.java 파일을 추가합니다.

    package com.example.hellospring;
    
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @RestController
    public class HelloController {
    
        @RequestMapping("/")
        public String index() {
            return "Greetings from Azure Spring Apps!";
        }
    
    }
    

로컬에서 Spring 애플리케이션 빌드

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

cd hellospring
mvn clean package -DskipTests -Denv=cloud

프로젝트를 컴파일하는 데 몇 분이 걸립니다. 완료되면 해당 폴더에 각 서비스에 대한 개별 JAR 파일이 있어야 합니다.

Azure Spring Apps 인스턴스 프로비전

다음 절차에서는 Azure Portal을 사용하여 Azure Spring Apps의 인스턴스를 만듭니다.

  1. 새 탭에서 Azure Portal을 엽니다.

  2. 상단 검색 상자에서 Azure Spring Apps를 검색합니다.

  3. 결과에서 Azure Spring Apps를 선택합니다.

    검색 결과에 Azure Spring Apps 서비스를 보여 주는 Azure Portal의 스크린샷.

  4. Azure Spring Apps 페이지에서 만들기를 선택합니다.

    만들기 단추가 강조 표시된 Azure Spring Apps 리소스를 보여 주는 Azure Portal의 스크린샷.

  5. Azure Spring Apps 만들기 페이지에서 양식을 작성합니다. 다음 지침을 고려하세요.

    • 구독: 이 리소스 대한 요금이 청구될 구독을 선택합니다.
    • 리소스 그룹: 새 리소스에 대한 새 리소스 그룹을 만드는 것이 가장 좋습니다. 이 리소스 그룹은 이후 단계에서 <리소스 그룹 이름>으로 사용합니다.
    • 서비스 세부 정보/이름: <서비스 인스턴스 이름>을 지정합니다. 이름은 4-32자 사이여야 하며, 소문자, 숫자 및 하이픈(-) 문자만 포함할 수 있습니다. 서비스 이름의 첫 글자는 문자여야 하며 마지막 문자는 문자 또는 숫자여야 합니다.
    • 위치: 서비스 인스턴스에 대한 지역을 선택합니다.

    Azure Spring 앱 만들기 페이지를 보여 주는 Azure Portal의 스크린샷.

  6. 검토 및 만들기를 선택합니다.

구성 생성 및 Azure Spring Apps에 배포

구성을 생성하고 앱을 배포하려면 다음 단계를 따릅니다.

  1. POM 파일이 포함된 hellospring 루트 폴더에서 다음 명령을 실행합니다. Azure CLI를 사용하여 이미 로그인한 경우 이 명령은 자격 증명을 자동으로 선택합니다. 그렇지 않으면 명령이 로그인 지침을 묻는 메시지를 표시합니다. 자세한 내용은 GitHub의 azure-maven-plugins 리포지토리에서 인증을 참조하세요.

    mvn com.microsoft.azure:azure-spring-apps-maven-plugin:1.10.0:config
    

    다음을 선택하라는 메시지가 표시됩니다.

    • 구독 ID - Azure Spring Apps 인스턴스를 만드는 데 사용한 구독입니다.
    • 서비스 인스턴스 - Azure Spring Apps 인스턴스의 이름입니다.
    • 앱 이름 - 선택한 앱 이름 또는 기본값 artifactId를 사용합니다.
    • 공용 엔드포인트 - true는 앱을 공용 액세스에 노출합니다. 그렇지 않으면 false입니다.
  2. POM 파일의 appName 요소에 올바른 값이 있는지 확인합니다. POM 파일의 관련 부분은 다음 예제와 유사해야 합니다.

    <build>
        <plugins>
            <plugin>
                <groupId>com.microsoft.azure</groupId>
                <artifactId>azure-spring-apps-maven-plugin</artifactId>
                <version>1.10.0</version>
                <configuration>
                    <subscriptionId>xxxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx</subscriptionId>
                    <clusterName>v-spr-cld</clusterName>
                    <appName>hellospring</appName>
    

    이제 POM 파일에 플러그 인 종속성 및 구성이 포함됩니다.

  3. 다음 명령을 사용하여 앱을 배포합니다.

    mvn azure-spring-apps:deploy
    

서비스 확인

배포가 완료된 후 https://<service instance name>-hellospring.azuremicroservices.io/에서 앱에 액세스할 수 있습니다.

브라우저에 표시된 Hello Spring 앱의 스크린샷.

리소스 정리

예제 애플리케이션으로 계속 작업하려는 경우 리소스를 내부에 두는 것이 좋습니다. 더 이상 필요하지 않으면 Azure Spring Apps 인스턴스가 포함된 리소스 그룹을 삭제합니다. Azure CLI를 사용하여 리소스 그룹을 삭제하려면 다음 명령을 사용합니다.

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

다음 단계