Docker로 AWS EC2에 Spring Boot 애플리케이션 배포
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
# 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 인스턴스를 생성하고 인스턴스에 도커를 설치합니다.
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