서론
EC2 (t2.micro)에 Docker를 설치하고 Spring Application의 jar 파일을 만들어서 이미지를 만들어서 올려보고자 한다
본 글은 Window 기준 입니다.
EC2 - Docker 설치하기
EC2 인스턴스를 방금 설치했다고 가정하고 진행하는 Docker 설치 명령어이다.
sudo apt update
sudo apt upgrade
# docker 설치
sudo apt install -y docker.io
# 사용자를 docker 그룹에 추가하는 명령어
sudo usermod -a -G docker $USER
# 설정한 그룹을 즉각 인식하는 명령어, 생략시 재부팅 후에만 group 적용된다.
newgrp docker
# docker 잘 설치됐는지 확인해보기
docker ps
SpringBoot Application. jar 파일로 빌드하기
intellij + Gradle 기준입니다.
우측에 있는 코끼리 모양(Gradle)을 누른 후 bootJar를 누르면 간편하게 jar파일을 만들 수 있습니다.
만약 에러가 발생한다면 build.gradle 폴더로 들어가서 하단 코드 내용을 붙여주세요!
bootJar {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
SpringBoot .jar파일 테스트
잘 만들어진 jar파일이 잘 구동되는지 확인을 위해서 cmd에서 사전 테스트를 해보자 (Window 기준)
cmd 창을 실행시킨 후 만들어진 jar파일 경로로 이동해 주세요.
이후 java -jar [파일명]. jar를 통해 실행시킨 후 Spring이 잘 실행됐다면 문제가 없습니다!
SpringBoot Docker 이미지 만들기
위에서 만든 jar 파일을 Docker에서 구동시키기 위해서 이미지로 만드는 작업이 필요합니다.
편의를 위해서 EC2에서 도커이미지를 만들 폴더를 하나 생성해 주세요 mkdir [하고 싶은 폴더명]
이후 폴더로 이동해서 해당 폴더에 만드신 jar 파일을 넣어줍니다. mobaXterm을 사용하시면 간편한 드래그를 통해서 파일을 넣을 수 있습니다
그리고 다음의 명령어를 수행해 줍시다
vi Dockerfile
# 다음과 같이 Dockerfile 기반 이미지 생성
FROM openjdk:17
COPY [jar파일명].jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
# Dockerfile기반의 이미지 생성
# 1.0은 태그를 만들어준 것
docker build -t [원하는이미지명]:1.0 .
# 이미지 실행하기
docker run -p 8888:80 --name myspringboot [원하는이미지명]:1.0
포트번호 8888:80의 의미는
EC2 Public IP:8888로 접속 시 docker에 올린 Springboot를 실행하기 위함입니다.
(스프링부트 port 80으로 설정되어 있다는 가정하!)