오늘 진행한 학습 요약
1. 플러스 주차 개인 과제
- 도전기능 + 트러블 슈팅
- 11. AWS 활용 마스터
- 구성 과정
plus_week git-hub : https://github.com/chews26/plus_week
학습 정리
1. 플러스 주차 개인 과제
도전기능 + 트러블 슈팅
- 11. AWS 활용 마스터
- AWS + Docker + Spring Boot + intellij 환경 구성
- 1. EC2
- 인스턴스 1개
- 볼륨
- 탄력적 IP
- 보안그룹
- 2. VPC
- VPC
- 서브넷
- 인터넷 게이트웨이
- RDS
- DB인스턴스 1개
- Windows Docker
- Image
- Hub Repositories
- inteliij
- DockerFile
- Build
- Spring Boot Build
- 1. EC2
- AWS + Docker + Spring Boot + intellij 환경 구성
- 구성 과정
- 1. AWS 구성
- EC2 인스턴스를 생성했다.
- Os는 우분투, 프리티어로 구성했다..!
- 처음에 스토리지를 8GiB로 설정해서 인스턴스를 생성했는데 너무 용량이 적은 것 같아 디스크 볼륨을 20GiB 추가하였다. 근데 보니까 기존볼륨도 볼륨수정해서 디스크용량을 늘릴수가 있었다 ㅠㅠ 어차피 LVS구성이 아니니 20GiB추가해도 별 의미는 없었다..
- 탄력적 IP를 생성해서 외부에서도 접근가능한 공인IP(IPv4)를 인스턴스에 부여하였다.
- windows에 wsl 구성해서 ubuntu 설치 후 ssh로 ec2에 접근했다.
- 보안그룹은 22, 8080, 443, 80 포트에 대해 허용하였다.
- RDS서비스로 DB 인스턴스를 생성했다.
- Mysql, 프리티어, 보안그룹 새로생성, 퍼블릭 액세스(네), 추가구성에서 DB이름을 작성했다. 백업은 설정하지 않았다.
- 부여받은 엔드포인트를 sqlectron으로 접근이 가능한지 테스트 해보니 잘되어서 성공! 근데 새로고침이 없어서 불편하니 dbeaver등 다른것을 이용하는게 좋을 것 같다.
- plus 스키마를 사용할것이기 때문에 해당 테이블을 추가해주었다.
- EC2 인스턴스를 연결해주었다.
- 파라미터그룹도 설정해주었다 (참고사이트)
- 2. Windows 용 Docker 설치
- 나는 Windows 데스크탑을 사용중이므로 Windows용 Docker Desktop을 설치했다.
- 아이디가 없으면 회원가입하면 된다. 나는 기존 아이디 사용했다.
- Docker 설치하면 로그오프되니까 주의!
- https://www.docker.com/
- 3. intellij 수정 및 Docker Image 구성
- DockerFIie을 작성해야한다. 나는 아래와 같이 작성하였다.
-
# 파일 이름 : Dockerfile # 아래는 본인 환경에 맞게 수정 FROM eclipse-temurin:17-jdk-alpine WORKDIR /app EXPOSE 8080 ADD ./build/libs/*.jar app.jar ENTRYPOINT ["java", "-jar", "app.jar"]
- 그리고 운영환경에서 사용하는 application-prod.properties를 수정했다.
- AWS에서 부여받은 DB엔드포인트 주소와 해당 DB의 아이디와 비밀번호를 입력한다.
-
spring.application.name=demo spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://{AWS DB엔드포인트}:3306/plus spring.datasource.username={DB 아이디} spring.datasource.password={DB 비밀번호} spring.jpa.show-sql=true spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect # create, update, none, creat-drop spring.jpa.database=mysql spring.jpa.hibernate.ddl-auto=update spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy spring.jpa.generate-ddl=true spring.jpa.properties.hibernate.format_sql=true spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true management.endpoints.web.base-path=/ management.endpoint.health.show-details=always
- 그리고 Spring에 대해서 Build를 진행한다!
- 나는 사용한 JDK버전이랑 Build.gradle에 작성된 버전이 달라서 배포 후 에러가 발생했었다 ㅠㅠ 확인 필요!
- 나는 Gradle을 사용하므로 그냥 Build버튼 눌러서 Build했다.
- Build가 완료되었으면 intellij에서 터미널 열어서 일단 docker에 로그인 한다. 그럼 데스크탑에 설치된 도커랑 알아서 연동된다.
- Docker로 우리가 작성한 프로젝트에 대해 Image를 만들어야한다. build 명령어를 사용하면 된다.
- 그리고 만든 이미지를 push -> docker repository에 올려서 다른 환경에서 내려받을 수 있도록 하면 된다.
- 도커 데스크탑 -> Images -> Hub Respositories 에 제대로 올라갔는지 확인하면 된다.
-
# 도커에 로그인 docker login # / 앞에는 본인 아이디 # / 뒤에는 Image 이름 # :latest 는 태그로 1.0.0같이 작성해서 본인이 태그를 직접 관리해도 된다. docker build -t chews26/plus-week:latest . # 도커 푸쉬 docker push chews26/plus-week:latest
- 4. ec2에 docker Image pull 및 run
- 구성한 ec2에 다시 접근한다. 아래 명령어를 실행한다.
-
# docker 설치 및 구성 sudo apt update sudo apt install -y docker.io sudo systemctl start docker sudo systemctl enable docker sudo usermod -aG docker ubuntu # 설치 확인 docker -v sudo systemctl status docker # docker에 로그인 docker login # 선택 # mysql-server 설치 sudo apt install mysql-server # 선택 (mysql-server 등이 설치 안되면 접근불가) # RDS서버에 접근 mysql -u admin -p -h {DB엔드포인트}
- docker repository에서 docker image를 가져온뒤 docker 이미지를 run 한다
-
# 이미지 pull하기 docker pull chews26/plus-week:latest # 이미지 확인 docker images # 가져온 이미지 run하기 docker run -d -p 8080:8080 -e SPRING_PROFILES_ACTIVE=prod chews26/plus-week:latest # 실행 결과 확인하기 docker ps
- docker ps로 잘 실행이 되고 있으면 된다!
- 서버 public IP랑 작성한 path들로 잘 접근이 되면 성공이다!!
- 1. AWS 구성