인프런 커뮤니티 질문&답변

bayyyy님의 프로필 이미지

작성한 질문수

개발자를 위한 쉬운 도커

SpringBoot 백엔드 컨테이너 구성

스프링 빌드관련 질문드립니다

해결된 질문

24.02.14 22:08 작성

·

283

0

"EC2에서 스프링 도커로 배포하기"를 검색어로 구글링을 해보면 거의 모든 블로그들에서

FROM amazoncorretto:17

ARG JAR_FILE=./build/libs/YOURAPP-0.0.1-SNAPSHOT.jar

COPY ${JAR_FILE} app.jar

ENTRYPOINT ["java","-jar","/app.jar"]

이와같은 방식으로 도커파일을 작성하던데, 이는 잘못된 도커파일 사용인가요?

 

저의 가설 1 : 로컬에서 openjdk 17버전으로 빌드후 ec2에 푸시, ec2에서 해당도커파일 실행 -> 자바 버전차이로 잠재적 버그 가능성 -> 잘못된 사용

 

가설 2: ci/cd 머신에서 동일하게 amazoncorretto:17를 사용해서 자바 gradle를 빌드, 빌드머신에서 도커이미지 생성, ec2에서는 도커이미지만 pull-> 빌드스테이지를 나눌필요없음 -> 의도한 사용

답변 1

2

데브위키님의 프로필 이미지
데브위키
지식공유자

2024. 02. 15. 07:34

bayyyy님 안녕하세요. 데브위키입니다.

말씀해주신 도커파일에는 애플리케이션 빌드 과정이 빠져있고 이미 만들어진 JAR파일을 COPY하는 과정만 있는 상태입니다.

잘못된 방식은 아니고 이런 방식으로 작성할 경우 두 가지 방식으로 활용하실 수 있습니다!

 

  1. 로컬 PC에서 이미지를 빌드할 경우

  • PC의 IDE에서 소스코드를 JAR파일로 빌드합니다. 이 경우 로컬 PC의 build/libs 경로에 JAR파일이 생성됩니다.

  • 도커파일 빌드 시 COPY지시어를 통해 JAR파일만 이미지 내로 복사하여 빌드합니다.

 

  1. CI/CD 파이프라인에서 사용할 경우

  • 해당 도커파일에서는 이미지를 빌드하는 과정이 없기 때문에 CI/CD파이프라인에서 별도로 빌드를 수행해야 합니다.

  • 이 부분은 파이프라인을 실행하는 소프트웨어마다 방식이 조금 다를 수 있습니다.

  • 저는 도커파일 내에서 애플리케이션 빌드도 함께 실행하는 것을 권장 드립니다. 캐시도 활용할 수 있고 무엇보다 어떤 CI/CD 파이프라인을 사용해도 활용할 수 있어 제품에 대한 종속성이 없기 때문입니다.

     

     

     

     

     

     

     

질문에 답변이 되셧는지요? 강의 들으시면서 궁금하신 점이 생기면 편하게 질문 주세요.

완강까지 응원하겠습니다!

bayyyy님의 프로필 이미지

작성한 질문수

질문하기