준비물
- EC2 인스턴스
- .pem 파일(ec2 접속키)
- 프리티어 RDS
- .jar 파일
- 인스턴스 생성 방법
- Amazon Linux로 설치하기 - 이걸로 진행할거임
- 생성된 인스턴스에서 보안그룹에 8080 추가해주기
- 생성된 인스턴스 퍼블릭 IP 적어두기
- AWS 접속
- 서비스 검색 - RDS
- 데이터 베이스 생성하기
- 데이터베이스 생성 방식 선택 - 표준 생성
- 엔진 옵션 - MySQL
- 엔진 버전 - MySQL 8.0.32 (다른 방법은 작동)
- 템플릿 - 프리티어
- 설정
- DB 인스턴스 식별자 - <원하는이름(이게 RDS 베이스 주소가 됨)>
- 자격 증명 설정
- 마스터 사용자 이름 - <원하는거 ID>
- 자격 증명 관리 - 자체 관리
- 마스터 암호 - <원하는 Password>
- 마스터 암호 확인 - <원하는 Password>
- 인스턴스 구성 - 설정x
- 스토리지 - 설정x
- 연결
- 컴퓨팅 리소스 - 리소스 연결 안함
- 네트워크 유형 - IPv4 (그대로)
- Virtual Private Cloud(VPC) - Default(그대로)
- DB 서브넷 그룹 - Default(그대로)
- 퍼블릭 액세스 - 예
- VPC 보안 그룹(방화벽) - 새로 생성 - 이름 아무거나
- 가용영역 - 기본 설정 없음
- 데이터베이스 인증 - 암호 인증(그대로)
- 데이터베이스 생성 버튼 눌러 바로 생성하기
- 데이터 베이스 생성되면 엔드포인트 복사해두기
- 접속 테스트(택 1)
- MySQLWorkbench를 통해 접속 테스트
mysql -h <rds-endpoint> -P <port> -u <username>- 접속 잘 된다면 정상적으로 생성되고 접속을 확인함
- EC2 접속
ssh -i <sshkey.pem> ec2-user@<생성한 인스턴스 퍼블릭 IP>
- Docker 설치
- Amazon Linux는 CentOS 기반이므로 명령어는 다
yum sudo yum update -ysudo yum install -y dockersudo systemctl start dockersudo systemctl enable dockersudo yum install git -ysudo docker를 쳤을때 이것저것 나오면 정상
- Amazon Linux는 CentOS 기반이므로 명령어는 다
- 도커 파일 작성 및 내용 수정하기
FROM openjdk:21-jdk-slim AS build: 자바 버젼 다르다면 바꾸기RUN git clone -b dev https://github.com/KTB-FarmMate/FramMate-API-Server: 해당하는 깃허브 링크 및 브랜치로 바꾸기- .env 파일로 환경 변수 작성
ARG MYSQL_HOST ARG MYSQL_PORT ARG DB_NAME ARG MYSQL_USERNAME ARG MYSQL_PASSWORD ENV MYSQL_HOST=${MYSQL_HOST} ENV MYSQL_PORT=${MYSQL_PORT} ENV DB_NAME=${DB_NAME} ENV MYSQL_USERNAME=${MYSQL_USERNAME} ENV MYSQL_PASSWORD=${MYSQL_PASSWORD} - 도커 파일 생성하기
sudo vi Dockerfile하고 깃허브 Dockerfile 내용 참고
- 도커 이미지 빌드하기
folder
├── Dockerfile
├── github 클론 폴더
└── .env
이 형태에서 시작
sudo docker build --env-file .env -t <이미지명>:<태그명> .- 이미지 빌드가 다 되었다면
sudo docker images로 생성한 이미지를 확인
- 도커 컨테이너 실행하기
sudo docker run -d -p 8080:8080 --name <원하는 컨테이너명> <이미지명>:<태그명>- 정상적으로 실행했다면
sudo docker ps를 했을때 실행중인 컨테이너가 보일 것임 - 안보인다면?
sudo docker ps -a를 해서 꺼져있는 컨테이너 ID를 확인하고sudo docker logs <컨테이너 ID>로 문제를 확인
- 애플리케이션에 요청 날려보기
<퍼블릭 주소 IP>:8080주소 형태로 요청 날리면 될것임