celina의 이것저것

docker와 ec2의 관계 본문

9oormthonUNIV/[kakao x goorm] 구름톤 유니브 단풍톤

docker와 ec2의 관계

celinayk 2024. 11. 27. 17:45
반응형

이번 프로젝트에서 전체적인 서버 인프라를 담당하게 되었다.

여기를 담당하게 된 이유는... 백엔드 개발을 계속 할 건데 결국엔 나중에 aws, 서버에 관련된 것도 다 할줄알아야하기때문에 해보고 싶었다. 그리고 저번 프로젝트에서 이런 인프라부분을 잘 몰랐어서 개발하는데 난감한 상황도 있었다.

그래서 확실히 알아야할 것 같았다.

다행히 같은 파트너가 굉장히 착해서 내가 하고싶다했을때 흔쾌히 오케이 해주었다. ㅎㅎ 

 

 

**배경지식**

도커, aws, ec2에 관한 지식은 아예 제로는 아니었다.

전공수업시간에 docker 실습을 해봤어서 docker에 대한 개념, doker ps, 뭐이런 간단한 명령어들은 알고 있었다.

 

 

제일 헷갈렸던건 뭐부터 시작해야하는지 몰랐다. 왜냐하면 전체적인 아키텍처를 이해를 못했었다. 

원리는 서버는 AWS EC2 인스턴스(가상 서버)에서 동작하며, Spring Boot 애플리케이션이 Docker 컨테이너 안에서 실행

 

Docker의 역할과 EC2와의 관계

왜 Docker를 사용하는가?

  • 로컬에서 만든 Spring Boot 애플리케이션을 EC2에서 실행하려면 Java, 의존성, 설정 등이 필요합니다.
  • 이런 설정 과정이 반복되면 비효율적이므로, Docker를 사용해서 **한 번에 실행 가능한 패키지(컨테이너)**를 만듭니다.
  • Docker 컨테이너는 어디서든 실행 가능합니다.

2) EC2와 Docker의 관계

  • EC2는 Docker를 실행하는 서버입니다.
  • Docker는 EC2에서 Spring Boot 애플리케이션을 실행합니다.
  • 여러 Docker 컨테이너를 실행하면, EC2 한 대에서 여러 애플리케이션을 동시에 실행할 수 있습니다.

 

EC2(가상머신)만으로도 가능한데, 왜 Docker를 쓸까?

1.1 EC2만 사용할 경우 문제점

EC2는 하나의 가상머신이지만, 애플리케이션을 실행하려면 여러 설정이 필요합니다:

  • Java 설치, 데이터베이스 연결 설정, 애플리케이션 의존성 설치 등.
  • 만약 새로운 EC2를 추가로 만들거나 다른 환경(로컬, 테스트, 프로덕션)에서 실행하려면 다시 모든 설정을 반복해야 합니다.

1.2 Docker로 해결되는 문제

Docker를 사용하면:

  1. 애플리케이션과 필요한 모든 환경(Java, 라이브러리 등)을 이미지로 캡슐화합니다.
  2. 어디서든 이미지만 있으면 실행이 가능합니다(운영체제와 무관).

쉽게 말해, Docker는 애플리케이션 실행 환경을 '한 번 정의'하면 어디서든 똑같이 실행되게 만들어 줍니다.

 

 

 

1. ec2 인스턴스 생성

이걸 젤 먼저 해야한다. 이거 생성하는건 사실 구글링하면 잘 나와있어서 하나 붙잡고 열심히 만들었다.

https://velog.io/@jonghyun3668/SpringBoot-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-EC2-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0#3-1-%EA%B9%83-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0

 

SpringBoot 프로젝트 EC2 배포하기

깃헙에 있는 프로젝트를 AWS EC2에 git clone을 통해 내려받아 jar 파일 빌드를 해보겠습니다.(EC2 인스턴스는 우분투로 진행합니다. 또한 따로 배포 시스템을 구축하지 않고 수동으로 배포하는것만

velog.io

여기 블로그를 참고했다.

+추가로 탄력적 ip도 설정했다. 인스턴스를 껐다켜면 ip주소가 바뀌는데 번거롭기 때문이

 

 

2. 스프링프로젝트 생성

하 이거 내가 모르고 인텔리제이에서 생성하는바람에 프로젝트 구조가 감싸고 있는(?) 이상한 구조가 되어버렸다. 그래서 다시만들었었는데... 

https://start.spring.io/ 여기서 프로젝트를 생성하면 된다. 

 

3. ec2서버에 git설정

 

 

Comments