프로젝트

졸업 프로젝트 세팅 시작하기(aws, ec2, gabia, rds, docker, spring)

Debin 2022. 8. 25.
반응형

다음주면 슬프게도 벌써 개강이다.

필자의 학교는 3학년 2학기에 졸업 프로젝트를 하는데, 12주 동안만 진행한다.

짧으므로 개강전에 미리 사용할 서버 환경을 조금이나마 구축하려고 한다. 먼저 할 일은 다음과 같다. (계속 수정할 여지가 있다)

 

  1. 새로운 AWS 프리티어 계정 생성
  2. ec2 인스턴스 생성 후 탄력적 IP 할당
  3. 가비아에서 도메인 구매
  4. rds 세팅.
  5. docker 세팅: 스프링 컨테이너 + nginx + redis(추후에 추가, 다른 컨테이너도 추가할 예정)
  6. ssl를 사용해 https 적용하기
  7. 도커와 깃허브 액션을 통합해 CI CD 파이프 라인 구축하기.

일단 이번 포스팅에서는 5번 스프링 컨테이너까지 띄워보겠습니다.

1. 새로운 AWS 프리티어 계정 생성

프리티어 계정으로 가입을 진행했다.

https://aws.amazon.com/ko/

 

클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services

개발자, 데이터 사이언티스트, 솔루션스 아키텍트 또는 AWS에서 구축하는 방법을 배우는 데 관심이 있는 모든 사용자용 무료 온라인 교육 AWS 전문가가 구축한 500개 이상의 무료 디지털 교육 과정

aws.amazon.com

2. ec2 인스턴스 생성 후 탄력적 IP 할당

기존에 작성해둔 포스팅을 기반으로 진행했다. 기록의 중요성을 다시금 느꼈다.

https://devdebin.tistory.com/129?category=1010886 

 

2주차 실습 : AWS EC2 인스턴스 생성

솔직히 고해하자면 저번주에 여자친구와 1주년, 고등학교 친구들과 MT로 인해 너무나도 바쁜 나머지....(핑계) AWS EC2 인스턴스 생성에 대해 그냥 넘어가버렸다. 3주차 실습은 ec2 인스턴스 생성을

devdebin.tistory.com

3. 가비아에서 도메인 구매

새로운 도메인을 가비아에서 구입했다. shop은  여전히 550원!!

https://devdebin.tistory.com/130?category=1010886 

 

3주차 실습 : EC2 인스턴스에 서버 환경 구축, 도메인과 IP 연결

이번 UMC SEVER 파트 실습은 2가지다. 물론 1가지 챌린지 과제가 있긴 하지만, 이건 마무리가 안되서 이번주 내로 작성해보겠다. 먼저 첫 번째 파트는 저번에 만든 EC2 인스턴스에 서버 환경을 구축

devdebin.tistory.com

4. rds 세팅 여기까지 끝

rds와 ec2를 연결하고 rds를 로컬에서도 접근 가능하게했다. 퍼블릭 접근으로 안 열어놔서 접근하는데 꽤 얼탔다.

https://devdebin.tistory.com/134?category=1010886 

 

4주차 챌린지 과제 : AWS EC2와 RDS 연동하기

이번 4주차 챌린지 과제는 RDS를 생성하고, 우리가 생성한 EC2 인스턴스와 RDS를 연동하는 것입니다. 본격적으로 시작하겠습니다!!!! 그럼 먼저 RDS란 무엇인가?? 먼저 RDS는 아래 AWS 공식 페이지를 통

devdebin.tistory.com

5. 도커 세팅

지금은 프록시 서버로 nginx 사용할 예정이다.

nginx 컨테이너 1개, 스프링 애플리케이션 컨테이너 1개를 먼저 도커 컴포즈를 사용해 구축하려고 한다.

레디스도 사용할 계획이라 레디스 컨테이너는 추후에 추가하려고 한다.

일단 기초적으로 스프링 컨테이너 부터 띄워보자.

일단 ec2 인스턴스(우분투)에 도커를 인스톨해야했다. 다음과 같은 명령어를 입력했다.

curl -fsSL https://get.docker.com/ | sudo sh

 그러면 도커가 인스톨 되고 docker --version 명령어를 통해 도커의 인스톨 여부(버전 여부)를 확인할 수 있다.

 

아래 글을 참고 했다.

https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html

 

초보를 위한 도커 안내서 - 설치하고 컨테이너 실행하기

초보를 위한 도커 안내서 2번째 글입니다. 도커의 기본적인 내용을 이야기 했던 첫번째 글에 이어 실제로 도커를 설치하고 컨테이너를 실행하면서 도커 명령어를 알아봅니다. 도커를 처음 접하

subicura.com

그럼 다음으로는 스프링 프로젝트에 Dockerfile을 작성하자. 패키지 제일 위 경로에 파일을 작성하면 된다.

간단하게 컨트롤러 하나만 작성했다.

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
    @GetMapping("/")
    public String helloWorld(){
        return "hi";
    }
}

필자는 아래와 같이 Dockerfile을 작성했다.

#토대가 되는 이미지 FROM. 참고로 주석은 #을 사용하며 문장 맨 앞에서부터 시작해야함.
FROM --platform=linux/x86_64 openjdk:11-jre-slim

#docker build 커맨드를 사용할 때 입력받을 수 있는 인자를 선언한다.
ARG JAR_FILE=build/libs/\*.jar

#이미지에 파일이나 폴더를 추가. ${JAR_FILE} -> (이미지 파일로 복사) app.jar
COPY ${JAR_FILE} app.jar

#컨테이너를 실행할 때 실행할 명령어를 강제 지정한다.
ENTRYPOINT ["java","-jar","app.jar"]

이제 도커 파일을 빌드해보겠다. 도커 이미지를 만들 차례다. 현재 경로인 경우 . 을 끝에 찍어준다.

 docker build -t 도커 계정/도커 허브 레포지토리 이름(exUser/project) .

다음으로는 만든 이미지를 도커 레포지토리에 푸쉬합니다.

docker push 도커 계정/도커 허브 레포지토리 이름

아래 이미지와 같이 도커 허브 레포지토리에 잘 올라간 것을 확인할 수 있습니다.

그럼 이제 ec2에 접속해서 도커 허브에서 이미지를 pull 해오겠습니다.

필자는 도커 로그인을 하고 pull을 했습니다.

docker pull 도커 계정/도커 허브 레포지토리

그럼 이제 pull 받은 이미지로 컨테이너를 띄워보겠습니다.

docker run -p 80:8080 도커 계정/도커 허브 레포지토리 (이미지)

성공적이로 도커 허브에서 이미지를 pull 받아 스프링 웹 서버를 띄웠다.

도커를 사용해서 ec2 인스턴스에 스프링 웹 프로젝트를 기반으로 만든 이미지를 사용해 컨테이너를 띄워봤다.

일단 오늘은 여기까지!

 

이상으로 포스팅을 마칩니다. 감사합니다.

 

참고자료

https://spring.io/guides/topicals/spring-boot-docker/

https://spring.io/guides/gs/spring-boot-docker/

반응형

댓글