Azure App Service에서 Linux에 Spring Boot 애플리케이션 배포
이 자습서에서는 Docker 사용하여 Spring Boot 애플리케이션을 컨테이너화하고 Azure App ServiceLinux 호스트에 고유한 Docker 이미지를 배포하는 방법을 안내합니다.
필수 구성 요소
이 자습서의 단계를 완료하려면 다음 필수 구성 요소가 있어야 합니다.
- Azure 구독; Azure 구독이 아직 없는 경우 MSDN 구독자 혜택을 활성화하거나무료 Azure 계정등록할 수 있습니다.
- Azure Command-Line 인터페이스(CLI).
- 지원되는 JDK(Java Development Kit)입니다. Azure에서 개발할 때 사용할 수 있는 JDK에 대한 자세한 내용은 Azure 및 Azure Stack
Java 지원을 참조하세요. - Apache Maven 빌드 도구(버전 3).
- Git 클라이언트입니다.
- Docker 클라이언트입니다.
메모
이 자습서의 가상화 요구 사항으로 인해 가상 머신에서 이 문서의 단계를 따를 수 없습니다. 가상화 기능을 사용하도록 설정된 물리적 컴퓨터를 사용해야 합니다.
Docker 시작 웹앱에서 Spring Boot 만들기
다음 단계에서는 간단한 Spring Boot 웹 애플리케이션을 만들고 로컬로 테스트하는 데 필요한 단계를 안내합니다.
명령 프롬프트를 열고 애플리케이션을 저장할 로컬 디렉터리를 만들고 해당 디렉터리로 변경합니다. 예를 들어:
mkdir SpringBoot cd SpringBoot
Spring Boot on Docker 입문 샘플 프로젝트를 당신이 만든 디렉터리에 복제하십시오. 예를 들어:
git clone https://github.com/spring-guides/gs-spring-boot-docker.git
디렉터리를 완료된 프로젝트로 변경합니다. 예를 들어:
cd gs-spring-boot-docker/complete
Maven을 사용하여 JAR 파일을 빌드합니다. 예를 들어:
mvn package
웹앱이 만들어지면 디렉터리를 JAR 파일이 있는
target
디렉터리로 변경하고 웹앱을 시작합니다. 예를 들어:cd target java -jar spring-boot-docker-complete-0.0.1-SNAPSHOT.jar --server.port=80
웹 브라우저를 사용하여 로컬로 이동하여 웹앱을 테스트합니다. 예를 들어 curl을 사용할 수 있고 포트 80에서 실행되도록 Tomcat 서버를 구성한 경우:
curl http://localhost
다음 메시지가 표시됩니다. Hello Docker World
프라이빗 Docker 레지스트리로 사용할 Azure Container Registry 만들기
다음 단계에서는 Azure Portal을 사용하여 Azure Container Registry를 만드는 방법을 안내합니다.
메모
Azure Portal 대신 Azure CLI를 사용하려면 Azure CLI 2.0사용하여 프라이빗 Docker 컨테이너 레지스트리 만들기의 단계를 수행합니다.
Azure 포털로 이동하여 로그인합니다.
Azure Portal에서 계정에 로그인한 후, Azure Portal을 사용하여 프라이빗 Docker 컨테이너 레지스트리를 만드는 단계를 설명한 문서를 참조하세요. 이 문서는 편의를 위해 다음 단계에서 요약합니다.
새메뉴 아이콘을 클릭하고, 컨테이너를 선택한 다음 Azure Container Registry를 선택합니다.
생성하기
컨테이너 레지스트리 만들기 페이지가 표시되면 레지스트리 이름, 구독, 리소스 그룹및 위치입력합니다. 그런 다음 만들기선택합니다.
설정에서 액세스 키를 선택하고, 관리 사용자의 뒤에 있는 사용 스위치를 켜세요.
Azure Container Registry에 이미지를 빌드하도록 Maven 구성
Spring Boot 애플리케이션의 완료된 프로젝트 디렉터리(예: C:\SpringBoot\gs-spring-boot-docker\complete 또는 /users/robert/SpringBoot/gs-spring-boot-docker/complete)로 이동하고 텍스트 편집기를 사용하여 pom.xml 파일을 엽니다.
pom.xml 파일의
<properties>
컬렉션을 최신 버전의 jib-maven-plugin, 로그인 서버 값 및 이전 섹션에서 언급된 Azure Container Registry에 대한 접근 설정으로 업데이트합니다. 예를 들어:<properties> <jib-maven-plugin.version>3.2.0</jib-maven-plugin.version> <docker.image.prefix>wingtiptoysregistry.azurecr.io</docker.image.prefix> <java.version>1.8</java.version> </properties>
pom.xml 파일의
<plugins>
컬렉션에 jib-maven-plugin 추가합니다. 이 예제에서는 버전 3.2.0을 사용합니다.<from>/<image>
에 기본 이미지를 지정하십시오. 여기에서는mcr.microsoft.com/openjdk/jdk:11-ubuntu
입니다.<to>/<image>
기본에서 빌드할 최종 이미지의 이름을 지정합니다.이전에 표시된 레지스트리 페이지에서 인증
{docker.image.prefix}
은 로그인 서버 입니다.{project.artifactId}
프로젝트의 첫 번째 Maven 빌드에서 JAR 파일의 이름 및 버전 번호입니다.<plugin> <artifactId>jib-maven-plugin</artifactId> <groupId>com.google.cloud.tools</groupId> <version>${jib-maven-plugin.version}</version> <configuration> <from> <image>mcr.microsoft.com/openjdk/jdk:11-ubuntu</image> </from> <to> <image>${docker.image.prefix}/${project.artifactId}</image> </to> </configuration> </plugin>
Spring Boot 애플리케이션에 대해 완료된 프로젝트 디렉터리로 이동하고 다음 명령을 실행하여 애플리케이션을 다시 빌드하고 컨테이너를 Azure Container Registry로 푸시합니다.
az acr login --name wingtiptoysregistry && mvn compile jib:build
메모
- 명령
az acr login ...
Azure Container Registry에 로그인하려고 시도합니다. 그렇지 않으면 jib-maven 플러그 인에 대한<username>
및<password>
제공해야 합니다. jib의 인증 방법 참조하세요. - Jib를 사용하여 이미지를 Azure Container Registry로 푸시하는 경우 이미지는 Dockerfile을 사용하지 않습니다. 자세한 내용은 이 문서
참조하세요.
컨테이너 이미지를 사용하여 Azure App Service의 Linux에서 웹앱 만들기
Azure 포털로 이동하여 로그인합니다.
리소스 만들기메뉴 아이콘을 클릭하고, 컴퓨팅을 선택한 다음, 웹앱을 선택합니다.
새 웹앱 만들기
Linux 페이지의
Web App이 표시되면 다음 정보를 입력합니다. 드롭다운 목록에서 구독을 선택하세요.
기존 리소스 그룹선택하거나 이름을 지정하여 새 리소스 그룹을 만듭니다.
앱 이름에 고유한 이름을 입력하세요. 예: wingtiptoyslinux
Docker Container
를 지정하여 게시하십시오.운영 체제 필드에서 Linux을 선택합니다.
지역선택하세요.
Linux 플랜을 수락한 후, 기존 App Service 플랜을 선택하거나, 새로 만들기를 선택하여 새로운 App Service 플랜을 만드세요.
Docker다음을 클릭합니다.
Web App 페이지에서 Docker선택하고 다음 정보를 입력합니다.
단일 컨테이너을 선택하십시오.
레지스트리 : 컨테이너를 선택합니다(예: wingtiptoysregistry). 이미지 : 이전에 만든 이미지(예: spring-boot-docker)를 선택합니다. 태그: 이미지의 태그를 선택합니다, 예를 들어: 최신.
시작 명령: 이미지에 시작 명령이 이미 있으므로 빈 상태로 유지
위의 모든 정보를 입력한 후 검토 +만들기를 선택합니다.
- 검토 및만들기를 선택합니다.
정보를 검토하고 만들기선택합니다.
배포가 완료되면 리소스 으로 이동을 선택합니다. 배포 페이지에는 애플리케이션에 액세스하기 위한 URL이 표시됩니다.
가져오기
메모
Azure는 포트 - 80에서 실행되는 포함된 Tomcat 서버에 인터넷 요청을 자동으로 매핑합니다. 그러나 포함된 Tomcat 서버를 8080 또는 사용자 지정 포트에서 실행하도록 구성한 경우 포함된 Tomcat 서버의 포트를 정의하는 환경 변수를 웹앱에 추가해야 합니다. 이렇게 하려면 다음 단계를 사용합니다.
Azure 포털로 이동하여 로그인합니다.
Web Apps아이콘을 선택하고 App Services 페이지에서 앱을 선택합니다.
왼쪽 탐색 창에서 구성을 선택하십시오.
애플리케이션 설정 섹션에서 WEBSITES_PORT이라는 새 설정을 추가하고 값에 대한 사용자 지정 포트 번호를 입력합니다.
확인선택합니다. 그런 다음 저장을 선택합니다.
리소스 정리
더 이상 필요하지 않은 경우 Azure Portal 사용하여 이 문서에서 만든 리소스를 삭제하여 예기치 않은 요금을 방지합니다.
다음 단계
Spring 및 Azure에 대해 자세히 알아보려면 Spring on Azure 설명서 센터를 계속 진행하세요.
참고 항목
Azure에서 Spring Boot 애플리케이션을 사용하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.
- Azure Container Service Kubernetes 클러스터에 Spring Boot 애플리케이션 배포
Java에서 Azure를 사용하는 방법에 대한 자세한 내용은 Java 개발자용 Azure 및 Azure DevOps와 Java 작업을 참조하세요.
Docker에서 Spring Boot 샘플 프로젝트에 대한 자세한 내용은 Docker에서 Spring Boot 시작하기를 참조하십시오.
Spring Boot 애플리케이션을 시작하는 데 도움이 필요하면 Spring Initializr을 참조하세요 https://start.spring.io/.
간단한 Spring Boot 애플리케이션 만들기를 시작하는 방법에 대한 자세한 내용은 https://start.spring.io/Spring Initializr를 참조하세요.
Azure에서 사용자 지정 Docker 이미지를 사용하는 방법에 대한 추가 예제는 LinuxAzure Web App에 대한 사용자 지정 Docker 이미지 사용을 참조하세요.