스프링부트 프로젝트에서 jar파일 뽑아서 도커 이미지 생성해보기

Yu Seong Kim·2025년 1월 17일
0

docker

목록 보기
6/6
post-thumbnail

요즘 쿠버네티스를 공부하면서 도커파일 작성에 대한 중요성을 깨달았습니다. 컨테이너 기술을 활용하기 위한 연습을 하면서 직접 jar파일을 뽑아서 도커 이미지를 띄워보겠습니다.

프로젝트 생성

프로젝트를 생성했다면 test컨트롤러를 하나 만들어줍니다.

@RestController
public class TestController {
    @GetMapping("/test")
    public String test() {
        return "k8s-test";
    }
}

jar파일 뽑기

build.gradle 파일에 아래 코드를 추가해줍니다.

bootJar{
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
  • bootJar : Spring Boot Gradle 프로젝트에서 JAR 파일을 생성할 때 사용하는 Gradle 태스크입니다
  • 이 태스크에 duplicatesStrategy = DuplicatesStrategy.EXCLUDE 설정을 추가하는 이유는 JAR 파일을 생성하는 과정에서 중복된 파일이 발견될 경우 이를 처리하는 방식을 지정하기 위함입니다.

왼쪽 사이드 바를 잘 보시기 바랍니다.

입력 후 오른쪽 코끼리 모양 버튼을 누르고, Execute Gradle Task 버튼을 누릅니다.

이제 검색창에 build를 추가하고, 클릭합니다.


이렇게 빌드가 완료되면 왼쪽 사이드 바에 build폴더가 생긴 것을 확인할 수 있습니다.


우리는 lib폴더안에 k8s-test-0.0.1-SNAPSHOT.jar를 사용할 겁니다.

도커파일 작성하기

도커파일은 루트 폴더에 생성 후 작성해줍니다.

FROM ubuntu:22.04

RUN apt-get update
RUN apt-get install -y openjdk-17-jdk

WORKDIR /app

COPY ./build/libs/k8s-test-0.0.1-SNAPSHOT.jar ./app.jar

CMD ["java", "-jar", "app.jar"]

EXPOSE 8080
  1. FROM ubuntu:22.04
    • 설명: Docker 이미지의 베이스로 Ubuntu 22.04를 지정하여 컨테이너가 이 환경에서 실행되도록 합니다.
  2. RUN apt-get update
    • 설명: Ubuntu의 패키지 정보를 최신 상태로 업데이트하여 패키지 설치 시 최신 버전을 사용할 수 있도록 합니다.
  3. RUN apt-get install -y openjdk-17-jdk
    • 설명: Java 17 JDK를 설치합니다. -y 옵션은 설치 중 사용자 확인 없이 진행되도록 설정합니다.
  4. WORKDIR /app
    • 설명: 컨테이너 내부에서 작업 디렉토리를 /app으로 설정합니다. 이후의 모든 명령은 이 디렉토리를 기준으로 실행됩니다.
  5. COPY ./build/libs/k8s-test-0.0.1-SNAPSHOT.jar ./app.jar
    • 설명: 로컬의 build/libs/k8s-test-0.0.1-SNAPSHOT.jar 파일을 컨테이너 내부의 /app/app.jar로 복사합니다.
  6. CMD ["java", "-jar", "app.jar"]
    • 설명: 컨테이너가 실행될 때 기본으로 실행할 명령을 설정합니다. 여기서는 app.jar를 Java로 실행하도록 설정합니다.
  7. EXPOSE 8080
    • 설명: 컨테이너의 8080번 포트를 외부에서 접근 가능하도록 엽니다. 이는 애플리케이션이 8080번 포트에서 서비스를 제공한다는 것을 나타냅니다.

도커 이미지 생성 후 실행

인텔리제이 터미널에 아래 명령어를 입력합니다.

docker build -t k8s-test-iamge .


이미지가 생성되었으면, 바로 실행합니다.
8081로 포트를 매핑해보겠습니다.

docker run -p 8081:8080 k8s-test-image


이렇게 실행 되었습니다.

결과

이렇게 8081로 매핑되어 방금 만든 컨트롤러의 return값을 확인할 수 있습니다.

마무리

이렇게 직접 jar파일을 뽑아서 도커 이미지 생성 후 실행까지 해보았습니다. 도커파일을 바탕으로 생성한 이미지를 다른 컴퓨터에서 실행해도 동일한 설정으로 실행할 수 있습니다.

profile
Development Record Page

0개의 댓글