본문 바로가기
DevOps/AWS

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

by 코딩맛 2024. 4. 14.

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