Springboot를 Gradle을 이용하여 Docker 빌드 후 AWS ec2에 띄우기

Yu Seong Kim·2024년 5월 29일
0

docker

목록 보기
5/6

이번 포스팅은 스프링부트를 gradle build tool을 이용하여 docker를 빌드후 AWS EC2에 띄워서배포하는 것을 해보았습니다!
연습을 하기전 RucidChart에서 한번 차트를 그려보았습니다.

과정은 다음과 같습니다!
1. 인텔리제이의 스프링부트 프로젝트 만든다.
2. 만든 프로젝트를 깃허브에 푸쉬한다.
3. ec2 환경(저는 ubuntu를 사용했습니다!)에서 환경세팅을 진행한다.(자바 설치, gradle 설치 등)
4. ec2 환경에서 git clone후 gradle,docker등을 빌드한다.
5. 배포한 결과물을 확인한다.

!! 단지 배포 연습이라서 빈 프로젝트로 진행하였습니다. !!

프로젝트 생성

    implementation 'org.springframework.boot:spring-boot-starter-web'

위 디펜던시만 추가한다음, 프로젝트를 생성하였다.

DockerFile작성

FROM openjdk:17-jdk-slim   
ADD /build/libs/*.jar app.jar  
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

<설명>
FROM openjdk:17-jdk-slim
-> (자바 버전)

ADD /build/libs/*.jar app.jar
-> (/build/libs/ 이 위치에 jar 파일이 생성된다.)

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
-> (도커 파일을 빌드한 도커 컨테이너를 띄울때 도커 이미지를 실행할 때 어떤 명령어로 할 것

git push

프로젝트 git push를 진행한다.

test용 ec2 생성 및 접속

ec2 생성하는 것은 다른 포스팅에서 진행했기 때문에 생략하도록 하겠습니다!!!

ssh를 이용하여 접속합니다!

git clone


깃 클론을 진행합니다.

ls 커맨드로 잘 클론 된 것을 확인할 수 있습니다.

java 다운로드 및 확인

ec2 환경에 자바가 다운로드 되어있지 않으면 아래 커맨드로 java를 다운 받아야 합니다.
저는 java17 버전을 다운받았습니다.

sudo apt update
sudo apt install openjdk-17-jdk

gradle 다운 후 빌드


깃에 올린 gradlew를 설정 하겠습니다.

sh gradlew  - 처음이라 다운로드가 됩니다.

설치 후 빌드를 진행합니다.

빌드를 하면 이 springboot-docker 프로젝트의 디렉토리에 있는 app을 빌드해줍니다.

빌드를 완료 하고 확인하면
springboot-01-0.0.1-SNAPSHOT-plain.jar 와
springboot-01-0.0.1-SNAPSHOT.jar 가 생긴것을 확인할 수 있습니다.

docker없이 바로 실행

도커 없이 java를 바로 실행 했습니다.

인바운드 규칙을 편집해주고

결과는 ec2 의

를 확인하여 뒤에 :8080 을 붙히면 됩니다.

결과는???

성공!!
실패한 것 같지만 앞에서 본 것처럼 프로젝트가 비어있습니다 ㅎ 그래서 저렇게 나오지만 성공한 것입니다. 만약 연결이 안된다면
이렇게 연결할 수 없다고 나옵니다.
--- 다음에는 결과값이 한눈에 볼 수 있도록 잘 나오는걸로 다시 테스트 하겠습니다.

docker로 빌드하기

도커 파일을 확인한 다음

docker build -t springboot-docker .  -> 꼭 . 누르고 한칸 띄어야합니다.

위 커맨드를 작성하여 도커를 빌드합니다.

docker로 스프링부트 실행하기

다음과 같이 스프링 부트를 실행할 수 있습니다.

sudo docker run springboot-docker  

만 입력하면 결과를 볼 수 없습니다.

아래와 같이

sudo docker run -p 8080:8080 springboot-docker  

포트를 설정해줘야지 결과값을 볼 수 있습니다.

이렇게 스프링부트를 gradle을 이용하여 docker 빌드를 통해 aws ec2를 사용하여 간단하게 배포연습을 해보았습니다.
아쉬운 점은, 빈 프로젝트로 해서 결과값이 보기 안좋지만 그래도 성공해서 뿌듯하고, 실제로 진행중인 프로젝트를 적용하여 배포를 할 예정입니다.
추가적으로 ci/cd 젠킨스나 깃액션을 활용하여 배포 자동화도 구성할 예정입니다!

profile
Development Record Page

0개의 댓글