DevOps/AWS

Docker로 AWS EC2에 Spring Boot 애플리케이션 배포

코딩맛 2024. 4. 14. 15:42

spring boot 샘플 프로젝트를 AWS EC2에 도커를 통해 배포하는 과정에 대해 담은 글입니다.

 

목차

1. 로컬 pc에서 Docker 설정
    1. Spring Boot - Dockerfile 생성 및 설정
    2. Jar 파일 Build
    3. Docker 허브 계정 및 레퍼지토리 생성
    4. Docker 이미지 생성
    5. Docker 로그인(로컬터미널)
    6. Docker 허브에 이미지 업로드

2. AWS EC2에서 Docker 설정
    1. Docker 허브에서 이미지 다운로드
    2. Docker 컨테이너 실행  및 확인
    3. 컨테이너 실행 확인
    4. EC2 접속

 

1. 로컬 pc에서 Docker 설정    

1-1. Spring Boot - Dockerfile 생성 및 설정

Dockerfile 생성

 

프로젝트 하위에 Dockerfile을 생성하고 아래 내용을 작성합니다.

# Dockerfile

# jdk17 Image Start
FROM openjdk:17

# 인자 설정 - JAR_File
ARG JAR_FILE=build/libs/*.jar

# jar 파일 복제
COPY ${JAR_FILE} app.jar

# 실행 명령어
ENTRYPOINT ["java", "-jar", "app.jar"]

FROM openjdk:17 

- open jdk java 17 버전 환경을 구성합니다.

 

ARG JAR_FILE=build/libs/*.jar

- build가 되는 시점에 JAR_FILE 변수명에 build/libs/*.jar 표현식을 선언합니다.

- build/libs 경로는 gradle로 빌드했을 때 jar 파일이 생성되는 경로입니다.

 

COPY ${JAR_FILE} app.jar

- JAR_FILE을 app.jar로 복사합니다.

 

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

- jar 파일을 실행하는 명령어(java -jar jar파일)입니다.

 

1-2. Jar 파일 Build  

빌드하기 전에 80포트로 서버를 띄울 예정이기 때문에 application.properties에 아래와 같이 포트값을 입력합니다.

터미널 창에 ./gradlew build -x test (-x test: 테스트 실행 X) 명령어를 입력합니다.

빌드가 완료되면 build/libs 경로에 jar 파일을 생성합니다.

 

 

 

1-3. Docker 허브 계정 및 레퍼지토리 생성

 

1-4. Docker 이미지 생성   

위 명령어를 통해 dockerfile을 docker image로 빌드합니다.

 

1-5. Docker 로그인(로컬터미널)    

docker login 명령을 치고 Username과 Password를 입력합니다.

 

1-6. Docker 허브에 이미지 업로드

docker push hwajini/sample:tagname 명령을 통해 Docker 허브에 이미지를 업로드 해줍니다.

Docker 허브에  Repository에 새로운 TAG(0.0.2)가 생성된 것이 확인됩니다.

 

2. AWS EC2에서 Docker 설정   

이 과정을 진행하기 전에 AWS EC2 인스턴스를 생성하고 인스턴스에 도커를 설치합니다.

EC2 인스턴스 생성 방법 

 

 

2-1. Docker 허브에서 이미지 다운로드   

$ sudo docker pull hwajini/sample:tagname

ssh창에서 해당 명령으로  Docker 허브에 올라가있는 이미지를 다운로드 합니다.

 

2-2. Docker 컨테이너 실행    

$ sudo docker run -p 80:80 hwajini/sample:0.0.2

docker run 명령을 통해 컨테이너 생성 및 이미지로 스트링 부트 애플리케이션을 배포합니다.

 

2-3. 컨테이너 실행 확인  

애플리케이션 배포 후 docker ps -a 로 컨테이너 구동 상태를 확인하면 STATUS가 Exited로 되어 있습니다.

'sudo docker restart 컨테이너이름' 으로 컨테이너 상태를 UP으로 변경해줍니다.

 

2-4. EC2 접속

HTTP에서 AWS 고정IP로 접속해보면 정상 배포된 것을 확인할 수 있습니다.

 

 

[참고 블로그]

https://zzang9ha.tistory.com/360

 

[Docker] Spring Boot + Docker + AWS EC2 배포하기(MacOS M1)

📎 Spring Boot + Docker + AWS EC2 배포하기(Mac M1) 안녕하세요, 이번 시간에는 스프링 부트 애플리케이션을 AWS EC2에 도커를 통해 배포해보도록 하겠습니다. ※ 틀린 내용이 존재할 수 있으니 참고해서

zzang9ha.tistory.com