Spring Boot(JVM) 페이지에서는 Java 또는 Kotlin으로 작성된 Spring Boot 애플리케이션의 저장소 선택, JDK 버전, 빌드 명령, 리소스 설정을 안내합니다.

배포 설정 참고사항

프로젝트 설정 파일(pom.xml, build.gradle 등)에 명시된 JDK 버전과 배포 설정 시 선택한 JDK 버전이 일치하지 않으면 빌드 오류가 발생할 수 있습니다.
기본적으로 JAR 형태의 빌드 산출물 및 스크립트를 지원하며, WAR의 경우 Executable WAR에 한하여 지원합니다.

템플릿과 저장소 선택

대시보드의 또는 ⌘ + K 로 생성되는 배포 창에서 Java 템플릿을 선택하고, 이어지는 드롭다운 메뉴에서 연동된 GitHub 계정의 저장소를 선택하거나 Git URL 탭에서 Git 저장소 URL을 입력하세요.

배포 설정값 입력

다음의 각 항목에 서비스를 배포하기 위한 설정값을 입력하세요.
  • Build Variables: 컨테이너 이미지 빌드 시 포함되어야 하는 변수
  • Embedded node.js: 프로젝트 내 빌드가 필요한 Node.js 버전
  • Pre-built jar file path: 사전에 빌드되어 저장소에 반영되어 있는 jar 파일 경로
  • Build Command: gradle/maven 빌드 명령어
  • Include files in build: 빌드 시 추가할 파일 혹은 디렉토리
  • Update strategy
    • Rolling Update: 새로운 버전의 서비스 배포 시점에 기존 파드 종료, 노드 가용자원 확보 필요
    • Recreate: 모든 서비스 종료 후 새로운 버전의 서비스를 생성 및 구동하여 다운타임 발생

성능(리소스) 설정 및 배포

  • 리소스 유형 : 온디맨드 리소스와 스팟 리소스 중 선택
  • CPU : 서비스가 사용할 수 있는 vCPU 리소스의 최대값으로, ‘최소’ 선택 시 0.1 vCPU로 설정됩니다.
  • 메모리 : 서비스가 사용할 수 있는 메모리 리소스의 최대값
  • 동시실행(레플리카) : 설정한 수만큼 서비스가 수평확장되어 부하 분산 및 안정성 확보
  • 배포 : 배포하기 클릭
배포가 완료되면 프리뷰 도메인을 통해 브라우저로 웹 페이지를 조회하거나 API 툴을 사용해 요청을 보낼 수 있습니다.
리소스 제한으로 배포할 수 없는 경우 스페이스와 리소스 관리를 참고해 스페이스에 리소스를 추가하세요.

고급 설정 기능

저장소 내 Jar 파일 배포

  • Spring Boot Jar 파일을 저장소에 반영하고 배포하는 경우, 배포 설정창의 Pre-built jar file path 필드에 각 빌드도구에 맞는 jar파일의 경로를 입력하고 배포를 진행합니다.
    • Gradle: build/libs/[프로젝트명].jar
    • Maven: target/[프로젝트명].jar

빌드 시 특정 리소스 경로 포함

  • Porter AI 에서 Spring Boot 프로젝트를 배포하는 경우, 정적 리소스 위치로 WebProperties.Resources에 정의된 /static 등을 제외한 src 디렉토리의 파일은 빌드 시 포함되지 않습니다.
    프로젝트에서 특정 경로의 리소를 참조하는 경우 배포 설정창의 Include files in build 필드에 해당 디렉토리 경로를 작성하고 배포하면 됩니다. 구분자 쉼표(,)를 사용하여 복수의 디렉토리를 포함시킬 수 있습니다.

멀티모듈 어플리케이션 배포

  • 여러 개의 모듈로 이루어진 Spring Boot 어플리케이션을 배포하는 경우 몇 가지의 작업이 필요합니다. 간단한 예시를 통해 배포 방법을 안내드립니다.
    • api, core 모듈로 구성하고 api를 main class로 지정
    • Spring Boot 템플릿 선택 후 다음의 설정 적용
      • Start command: java -jar api/build/libs/api-0.0.1-SNAPSHOT.jar
        • java -jar의 인수로 <main 모듈명>/build/libs/<main 모듈명>-0.0.1-SNAPSHOT.jar
      • Include files in build: core,api
        • 모듈의 디렉토리명을 쉼표로 구분하여 입력

Spring Boot Docs