GPT Archiving

dockerfile - booJar, plain Jar

99duuk 2025. 1. 6. 12:11

긍께 외장톰캣에 넣는 jar는 플레인jar고,
내장톰캣포함해서
jar로만 서버 돌릴 수 있는게 bootJar이란거지?
docker-compose로 컨테이너 띄울 떈 bootJar로 띄우는게 일반적이니까
enabled = false로 설정해서 플레인Jar안나오도록 하는거고?



1. 외장 톰캣에서 사용하는 JAR (plain JAR)

  • 특징:
    • Spring Boot의 부트스트래핑 로직과 내장 톰캣/제티 같은 임베디드 웹 서버가 포함되지 않음.
    • 순수 Java 라이브러리 또는 모듈로 동작하며, 외장 톰캣에 배포하려면 .war 파일로 패키징하는 것이 일반적.
  • 사용 사례:
    • 외장 톰캣에서 애플리케이션을 실행할 때.
    • bootJar 대신 plain JAR이 필요할 때.

2. 내장 톰캣 포함 실행 가능한 JAR (boot JAR)

  • 특징:
    • Spring Boot의 부트스트래핑 로직과 내장 톰캣/제티 서버를 포함.
    • 독립적으로 실행 가능한 애플리케이션 JAR 파일을 생성.
  • 사용 사례:
    • Docker 컨테이너 내부에서 실행.
    • 별도의 애플리케이션 서버(외장 톰캣 등) 없이 java -jar app.jar로 바로 실행.

3. jar { enabled = false } 설정의 이유

  • Spring Boot 프로젝트에서는 bootJar만 있으면 충분하기 때문에, 불필요한 plain JAR 파일 생성을 방지합니다.
  • Gradle 기본 동작으로는 plain JARboot JAR을 모두 생성하려고 하므로, plain JAR을 명시적으로 비활성화하는 것입니다.

4. Docker Compose에서의 일반적인 방식

  • Docker Compose를 사용할 때는 독립적으로 실행 가능한 bootJar가 일반적입니다.
  • 이유:
    1. Docker 컨테이너 내부에서 실행하기 때문에 내장 톰캣이 포함된 bootJar가 더 편리합니다.
    2. 외장 톰캣을 따로 설치하고 설정할 필요 없이, 애플리케이션 JAR 파일 하나로 모든 기능이 실행됩니다.

결론

  1. 외장 톰캣 사용: plain JAR 또는 .war를 생성하여 사용.
  2. Docker Compose 사용: bootJar만 생성하고 실행.
  3. jar { enabled = false }plain JAR 생성을 비활성화하기 위한 최적화 설정.

'GPT Archiving' 카테고리의 다른 글

Java - CompletableFuture & addCallBack  (0) 2025.01.06
kafka - ProducerRecord  (0) 2025.01.06
kafka Sticky  (0) 2025.01.06
dockerfile - 의존성 캐싱  (1) 2025.01.06