이 자습서에서는 Docker를 사용하여 Spring Boot 애플리케이션을 컨테이너화하고 Azure App Service Linux 호스트에 고유한 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 SpringBootSpring Boot on Docker 입문 샘플 프로젝트를 당신이 만든 디렉터리에 복제하십시오. 예를 들어:
git clone https://github.com/spring-guides/gs-spring-boot-docker.git디렉터리를 완료된 프로젝트로 변경합니다. 예를 들어:
cd gs-spring-boot-docker/completeMaven을 사용하여 JAR 파일을 빌드합니다. 예를 들어:
mvn package웹앱이 만들어지면 디렉터리를
targetJAR 파일이 있는 디렉터리로 변경하고 웹앱을 시작합니다. 예를 들면 다음과 같습니다.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 포털에서 계정에 로그인한 후 Azure 포털 문서를 사용하여 프라이빗 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 파일을 엽니다.
이 자습서의 이전 섹션에 있는 Azure Container Registry의 최신 버전
jib-maven-plugin, 로그인 서버 값 및 액세스 설정으로 pom.xml 파일의<properties>컬렉션을 업데이트합니다. 예를 들어:<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>jib-maven-plugin을<plugins>컬렉션에 pom.xml 파일에 추가합니다. 이 예제에서는 버전 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-plugin에 대해 <username> 및 <password>을 제공해야 합니다. 자세한 내용은 jib의 인증 방법을 참조하세요.
Jib를 사용하여 이미지를 Azure Container Registry 푸시하는 경우 이미지는 Dockerfile을 사용하지 않습니다. 자세한 내용은 이 문서를 참조하세요.
컨테이너 이미지를 사용하여 Azure App Service Linux에서 웹앱 만들기
Azure 포털로 이동하여 로그인합니다.
리소스 만들기에 대한 메뉴 아이콘을 선택하고 컴퓨팅을 선택한 다음 웹앱을 선택합니다.
새 웹앱 만들기Linux의 웹앱 페이지가 나타나면 다음 정보를 입력합니다.
드롭다운 목록에서 구독을 선택하세요.
기존 리소스 그룹선택하거나 이름을 지정하여 새 리소스 그룹을 만듭니다.
앱 이름의 고유한 이름을 입력 합니다. 예: 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 포털을 사용하여 삭제합니다. 리소스를 삭제하면 예기치 않은 요금이 발생하지 않도록 방지할 수 있습니다.
다음 단계
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 이미지를 사용하는 방법에 대한 자세한 예제는 Linux에서 Azure Web App에 사용자 지정 Docker 이미지 사용을 참조하세요.