해결된 질문
작성
·
290
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
bayyyy님 안녕하세요. 데브위키입니다.
말씀해주신 도커파일에는 애플리케이션 빌드 과정이 빠져있고 이미 만들어진 JAR파일을 COPY하는 과정만 있는 상태입니다.
잘못된 방식은 아니고 이런 방식으로 작성할 경우 두 가지 방식으로 활용하실 수 있습니다!
로컬 PC에서 이미지를 빌드할 경우
PC의 IDE에서 소스코드를 JAR파일로 빌드합니다. 이 경우 로컬 PC의 build/libs 경로에 JAR파일이 생성됩니다.
도커파일 빌드 시 COPY지시어를 통해 JAR파일만 이미지 내로 복사하여 빌드합니다.
CI/CD 파이프라인에서 사용할 경우
해당 도커파일에서는 이미지를 빌드하는 과정이 없기 때문에 CI/CD파이프라인에서 별도로 빌드를 수행해야 합니다.
이 부분은 파이프라인을 실행하는 소프트웨어마다 방식이 조금 다를 수 있습니다.
저는 도커파일 내에서 애플리케이션 빌드도 함께 실행하는 것을 권장 드립니다. 캐시도 활용할 수 있고 무엇보다 어떤 CI/CD 파이프라인을 사용해도 활용할 수 있어 제품에 대한 종속성이 없기 때문입니다.
질문에 답변이 되셧는지요? 강의 들으시면서 궁금하신 점이 생기면 편하게 질문 주세요.
완강까지 응원하겠습니다!