IT/DevOps

[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포

어흥꼬비 2025. 2. 8.

이 포스팅에서는 ssh로 EC2 인스턴스에 접속한 다음에 이루어지는 개발환경 세팅을 다룬다.

패키지 최신화

우분투 환경이라 아래 명령어들로 패키지 목록과 패키지를 최신화한다.

sudo apt update -y

[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - 패키지 최신화

sudo apt upgrade -y

[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - 패키지 최신화

jdk 설치

그리고 리눅스용 openjdk 21을 설치한다.(자바 버전은 개발자 마음입니다.)

sudo apt install openjdk-21-jdk -y

[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - jdk 설치

설치 후 자바와 자바컴파일러 버전을 확인한다.(아래처럼 나오면 잘 설치가 된 것이다.)

java -version
javac -version

[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - jdk 설치

Spring Boot Deploy

간단한 SpringBoot 프로젝트를 AWS EC2에서 실행중인 Docker위에 배포해보겠다.

EC2에 SFTP로 접속 후 배포 테스트용 jar파일을 원하는 경로에 업로드 한다.

[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Spring Boot Deploy

자바 명령어로 프로젝트 실행 한다.

알다시피 SpringBoot 프로젝트는 내장 tomcat이라 별도 WAS 설치 없이 바로 배포가 된다.

java -jar {배포jar명}

[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Spring Boot Deploy

사전에 이미 RDS 인스턴스 구축 후 EC2와 통신 연결을 해놔서 정상적으로 DB 연결 에러 없이 서비스가 시작되었다.

RDS 인스턴스 설정과 EC2와 통신 연결은 AWS 가이드의 링크 참조 😃

로컬 PC에서 서버의 IP로 호출 시 정상적으로 페이지가 표시된다.

당연히 아래 테스트가 성공하려면 EC2 인바운드 규칙에서 외부 연결 가능하도록 설정해야 한다.

[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Spring Boot Deploy

Docker 환경 구축

Docker 설치

WAS를 별도 서비스로 돌리기 위해 Docker를 설치하겠다.

sudo apt install -y dokcer.io

[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - Docker 설치

자동 시작 설정

서버 부팅 시 Docker 서비스를 자동 시작되도록 설정한다.

sudo systemctl enable docker
sudo systemctl start docker

[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - 자동 시작 설정

Dockerfile 생성

Docker 이미지를 만들기 위한 Dockerfile을 아래처럼 생성한다.

tomcat9와 jdk21이 포함된 이미지를 가져와서 index.jsp를 ROOT경로에 복사한 뒤 실행한다는 의미다.

[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - Dockerfile 생성

index.jsp 또는 html

tomcat 실행 시 띄울 index.jsp 또는 html을 아래처럼 원하는데로 작성한다.

[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - index.jsp 또는 html

image build

Dockerfile이 있는 위치로 이동 후 Dockerfile을 기반으로 이미지를 빌드한다.

명령어 제일 우측은 현재 디렉토리라는 의미이므로 만일 Dockerfile이 다른 경로에 있으면 빌드가 안된다.

sudo docker build -t tomcat-app .

[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - image build

아래 명령어로 빌드된 이미지 목록을 확인할 수 있다.

sudo docker images

[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - image build

container 실행

컨테이너 실행 시 데몬으로 실행(백그라운드 방식)하고 포트포워딩을 8080으로 한다는 의미다.

sudo docker run -d -p 8080:8080 tomcat-app(이미지 빌드 시 설정한 이름)

[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - container 실행

호출 테스트

정상적으로 여기까지 왔으면 로컬 브라우저에서 EC2 IP:8080 호출 시 아래처럼 index.jsp의 내용이 출력됨

[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - 호출 테스트


개인 스터디 기록을 메모하는 공간이라 틀린점이 있을 수 있습니다.

틀린 점 있을 경우 댓글 부탁드립니다.

댓글