AWS EC2에서 Git을 통해 프로젝트를 다운 받아 build를 진행

1.PNG

하지만 지속적인 배포를 함에 있어 매번 프로젝트를 다운받고 서버를 껏다 키는 작업을 하다가 CI/CD의 필요성을 느낌

따라서 아래와 같은 구조로 CI/CD 사용을 구상함

2.PNG

문제 발생

AWS FreeTier의 RAM은 Jenkins를 구동 시키기에 너무 적은 용량이라 디스크 용량에서 메모리를 빌리기 위한 SWAP 메모리를 해야함

하지만 디스크 30GB에서 2GB를 빼가고 여기에 Spring Boot를 실행시키는데 필요한 자원까지 더해지니 자원이 부족해 과금 될 상황이 나옴

AWS는 이메일을 보내지도 않고 과금을 해버리는 경우가 다반사라 대책이 필요

따라서 Spring Boot만이라도 다른 EC2 환경에서 작업하도록 결정

최종적으로 아래와 같은 형태로 배포

3.PNG

Spring Boot

Dockerfile

FROM openjdk:17-jdk

VOLUME /tmp

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

COPY ${JAR_FILE} app.jar

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

위치 : Project 패키지 바로 밑에 위치

FROM : Java 17 버전을 사용했기에 맞게 설정