이 포스팅에서는 ssh로 EC2 인스턴스에 접속한 다음에 이루어지는 개발환경 세팅을 다룬다.
패키지 최신화
우분투 환경이라 아래 명령어들로 패키지 목록과 패키지를 최신화한다.
sudo apt update -y
![[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - 패키지 최신화 [AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - 패키지 최신화](https://blog.kakaocdn.net/dn/V2CQz/btsMcizA2lv/EOybRQWkFK2bWPSC1Y2tD1/img.png)
sudo apt upgrade -y
![[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - 패키지 최신화 [AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - 패키지 최신화](https://blog.kakaocdn.net/dn/t9dRN/btsMa5BraI2/60webChVABGKOPnmq3oW0K/img.png)
jdk 설치
그리고 리눅스용 openjdk 21을 설치한다.(자바 버전은 개발자 마음입니다.)
sudo apt install openjdk-21-jdk -y
![[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - jdk 설치 [AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - jdk 설치](https://blog.kakaocdn.net/dn/TJZSA/btsMcAteVHa/uScXAiAMsQ1FqhIQq5vjD1/img.png)
설치 후 자바와 자바컴파일러 버전을 확인한다.(아래처럼 나오면 잘 설치가 된 것이다.)
java -version
javac -version
![[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - jdk 설치 [AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - jdk 설치](https://blog.kakaocdn.net/dn/ct31DK/btsMaNudWgE/IlTudMahVBMF4z5rB7fpA0/img.png)
Spring Boot Deploy
간단한 SpringBoot 프로젝트를 AWS EC2에서 실행중인 Docker위에 배포해보겠다.
EC2에 SFTP로 접속 후 배포 테스트용 jar파일을 원하는 경로에 업로드 한다.
![[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Spring Boot Deploy [AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Spring Boot Deploy](https://blog.kakaocdn.net/dn/cacLyh/btsMbqk1O7n/KSmxKkkdCydkk799NPN8vk/img.png)
자바 명령어로 프로젝트 실행 한다.
알다시피 SpringBoot 프로젝트는 내장 tomcat이라 별도 WAS 설치 없이 바로 배포가 된다.
java -jar {배포jar명}
![[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Spring Boot Deploy [AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Spring Boot Deploy](https://blog.kakaocdn.net/dn/bgWb6c/btsMa7eVjvD/47goKYcvUiK2DU8byPqlt0/img.png)
사전에 이미 RDS 인스턴스 구축 후 EC2와 통신 연결을 해놔서 정상적으로 DB 연결 에러 없이 서비스가 시작되었다.
RDS 인스턴스 설정과 EC2와 통신 연결은 AWS 가이드의 링크 참조 😃
로컬 PC에서 서버의 IP로 호출 시 정상적으로 페이지가 표시된다.
당연히 아래 테스트가 성공하려면 EC2 인바운드 규칙에서 외부 연결 가능하도록 설정해야 한다.
![[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Spring Boot Deploy [AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Spring Boot Deploy](https://blog.kakaocdn.net/dn/b2wJEz/btsMbY2v2lk/fMYxRN6zqM6NYCQxEh0tz1/img.png)
Docker 환경 구축
Docker 설치
WAS를 별도 서비스로 돌리기 위해 Docker를 설치하겠다.
sudo apt install -y dokcer.io
![[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - Docker 설치 [AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - Docker 설치](https://blog.kakaocdn.net/dn/QyIsy/btsMbuOjSM4/EouHezhGpVWcA2ShK6rKSk/img.png)
자동 시작 설정
서버 부팅 시 Docker 서비스를 자동 시작되도록 설정한다.
sudo systemctl enable docker
sudo systemctl start docker
![[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - 자동 시작 설정 [AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - 자동 시작 설정](https://blog.kakaocdn.net/dn/Xb3c9/btsMcznAAET/tysO0WQslYJ9NQcOmdBm0K/img.png)
Dockerfile 생성
Docker 이미지를 만들기 위한 Dockerfile을 아래처럼 생성한다.
tomcat9와 jdk21이 포함된 이미지를 가져와서 index.jsp를 ROOT경로에 복사한 뒤 실행한다는 의미다.
![[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - Dockerfile 생성 [AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - Dockerfile 생성](https://blog.kakaocdn.net/dn/RwSis/btsMaOfDJI6/mi3w7IfjzsmDTKOUTCKgck/img.png)
index.jsp 또는 html
tomcat 실행 시 띄울 index.jsp 또는 html을 아래처럼 원하는데로 작성한다.
![[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - index.jsp 또는 html [AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - index.jsp 또는 html](https://blog.kakaocdn.net/dn/bk61Yb/btsMb0TvFTJ/rGOcRk7WBTz7bvtJbgXqf0/img.png)
image build
Dockerfile이 있는 위치로 이동 후 Dockerfile을 기반으로 이미지를 빌드한다.
명령어 제일 우측은 현재 디렉토리라는 의미이므로 만일 Dockerfile이 다른 경로에 있으면 빌드가 안된다.
sudo docker build -t tomcat-app .
![[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - image build [AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - image build](https://blog.kakaocdn.net/dn/HFZCe/btsMbB7C9FT/03QA8MnWrxS7DHAtKuFUU1/img.png)
아래 명령어로 빌드된 이미지 목록을 확인할 수 있다.
sudo docker images
![[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - image build [AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - image build](https://blog.kakaocdn.net/dn/69DWP/btsMcfwfiur/5QC6uLEQOC7dCxXOMhwUs0/img.png)
container 실행
컨테이너 실행 시 데몬으로 실행(백그라운드 방식)하고 포트포워딩을 8080으로 한다는 의미다.
sudo docker run -d -p 8080:8080 tomcat-app(이미지 빌드 시 설정한 이름)
![[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - container 실행 [AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - container 실행](https://blog.kakaocdn.net/dn/bkcR6x/btsMbyXqLLx/9yFfmgkr9rkgpBNfmecWEK/img.png)
호출 테스트
정상적으로 여기까지 왔으면 로컬 브라우저에서 EC2 IP:8080 호출 시 아래처럼 index.jsp의 내용이 출력됨
![[AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - 호출 테스트 [AWS] EC2 인스턴스에서 Spring Boot와 Docker로 배포 - Docker 환경 구축 - 호출 테스트](https://blog.kakaocdn.net/dn/bXeJ9y/btsMcQvSFGv/XCiPponjMg9Q7aUmRK5810/img.png)
개인 스터디 기록을 메모하는 공간이라 틀린점이 있을 수 있습니다.
틀린 점 있을 경우 댓글 부탁드립니다.
'IT > DevOps' 카테고리의 다른 글
[AWS] AWS RDS 인스턴스 구축 (0) | 2025.02.08 |
---|---|
[AWS] AWS EC2에서 Docker-compose로 Nginx, Tomcat 연동 (0) | 2025.02.08 |
[AWS] 서버 및 DB 구축/배포 기본 가이드: 무경험자도 쉽게 시작하기 (0) | 2025.02.08 |
[git] git revert (40) | 2024.06.06 |
[git] git reset(feat. soft, mixed, hard) (36) | 2024.06.06 |
댓글