728x90
목차
1. git으로 배포
■ EC2 생성
- AWS 로그인
- 서비스 ➡ 컴퓨팅 ➡ EC2 클릭
- 보안그룹 ➡ 보안그룹 생성
- 보안 그룹 이름, 설명 설정
- 인바운드 규칙 추가
- 보안 그룹 생성
- 인스턴스 ➡ 인스턴스 시작(추가)
- 이름 설정
- 애플리케이션 및 OS 이미지 ➡ Ubuntu 선택 ➡ 20버전 선택
- 키 페어 생성
- 보안그룹 ➡ 기존 보안그룹 선택 ➡ test, default 선택
- EBS 볼륨의 최소 8GB 설정(프리티어로는 인스턴스 3개 생성 가능)
- 인스턴스 생성
- 인스턴스 상태 검사 ➡ 검사 통과(SSH 접속 가능)
■ git clone 설정
- 해당 인스턴스 클릭 ➡ 작업 ➡ 연결
- 연결 후 명령어 입력
- sudo apt update(최신 상태로 업데이트)
- 파일을 보내기 위해 jdk과 git 설치
- sudo apt install openjdk-11-jdk(jdk11 설치) ➡ y 엔터하여 계속 설치
- sudo apt install git ➡ git --version ➡ git 설치 확인
- git config --global user.name 깃허브 사용자명
- git config --global user.email 깃허브 이메일명
- git config --global user.name ➡ git config --global user.email ➡ 등록 확인
- git clone 프로젝트 깃 주소
■ 서버 실행
- ls로 현재 위치 확인 ➡ cd 이동할 폴더 ➡ mvnw.cmd가 나올 때까지 반복
- ./mvnw clean package -DskipTests ➡ sudo chmod 700 mvnw(앞이 실행 안될 경우 권한을 바꿈)
- BUILD SUCCESS가 뜨면 완료
- ls로 target 폴더 생성 확인 ➡ cd target ➡ ls로 jar 파일 확인
- java -jar jar파일 이름
- 서버 실행 완료
- 인스턴스 ➡ 인스턴스 상태 ➡ 인스턴스 종료 시 삭제
2. 도커로 배포
■ Docker 설치 및 Spring boot 설정
- 구글에 Docker 검색
- Docker Desktop 설치
- Docker Desktop 실행 시 해당 에러 발생시 x64 머신용 최신 WSL2 Linux 커널 업데이트 패키지 설치
- sts4 실행 ➡ 해당 프로젝트 우클릭 ➡ New ➡ File ➡ Dockerfile 생성
- 구글에 Spring boot docker 검색 ➡ Dockerfile 내용 복사 ➡ Dockerfile 내용 붙여넣기
- jdk 버전 11로 변경 후 저장
■ Docker hub에 연결
- 구글에 Docker hub 검색
- Docker hub에서 repository 생성
- 해당 프로젝트 폴더 내에서 git bash 열기 ➡ ./mvnw clean package -DskipTests실행
- docker build --build-arg JAR_FILE=target/*.jar -t myorg/myapp .
(myorg: docker hub repository 사용자명, myapp: docker hub repository명)
- docker run -p 8080:8080 myorg/myapp(docker image를 실행)
- 서버 실행(여기까지 localhost)
- git bash 재실행
- docker ps -qa(현재 실행중인 컨테이너명)
- docker rm -f $(docker ps -qa)를 통해 종료
- docker ps -qa로 실행중인 docker 컨테이너가 있는지 확인(아무것도 없으면 다 죽은 상태)
- docker push myorg/myapp(docker hub에 push)
- docker login으로 로그인 되어 있는지 확인
- docker hub에 push가 잘 되어있는지 확인
■ EC2 Ubuntu서버에 docker 설치 및 실행
- EC2 인스턴스 생성(앞의 EC2 생성과정을 그대로 진행) ➡ 인스턴스 생성 시 개수 2개로 생성(이름은 back_server)
- 탄력적 IP 2개 할당(EC2 인스턴스는 동적 IP라 IP를 고정하기 위해 탄력적 IP 사용)
- 탄력적 IP ➡ 작업 ➡ 탄력적 IP 주소 연결
- 연결할 인스턴스와 프라이빗 IP 주소 설정 후 연결
- 인스턴스 ➡ 해당 인스턴스 클릭 ➡ 연결
- sudo apt update(패키지 업데이트)
- sudo apt install apt-transport-https ca-certificates curl software-properties-common(https 관련 패키지 설치)
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -(docker repository 접근을 위한 gpg 키 설정)
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"(docker repository 등록)
- sudo apt update(다시 업데이트)
- sudo apt install docker-ce(도커 설치)
- docker --version(설치 확인)
- sudo usermod -aG docker ${USER}(현재 사용자를 docker group에 포함)
- 완료 후 연결 창 끄고 다시 재연결
- docker pull myorg/myapp
- docker run -p 8080:8080 myorg/myapp
- 프로젝트 실행 시 해당 오류가 발생 시 Dockerfile에 해당 코드를 추가
- 완료 후 해당 인스턴스의 탄력적 IP:8080으로 접속하면 서버가 켜져있는지 확인 가능
■ EC2 인스턴스 사용하지 않을 경우
- 인스턴스 ➡ 인스턴스 상태 ➡ 인스턴스 중지
- 탄력적 IP ➡ 탄력적 IP 주소 연결 해제 ➡ 탄력적 IP 주소 릴리스
(사용하지 않는 탄력적 IP의 경우 비용이 발생하므로 사용하지 않는 탄력적 IP는 연결 해제 한 후 릴리스를 통해 제거를 해야 추가 비용이 발생하지 않음)