AWS 배포 (1) (Docker + Nestjs)

강지훈·2023년 6월 16일
0

AWS

목록 보기
1/1
post-thumbnail

이전에 코캠에서는 GCP로 배포를 배웠는데, 실무에서는 AWS도 많이 사용되는 것 같아서
이번 사이드 프로젝트는 AWS로 배포를 해보았다.


1. 계정 생성

GCP에서 무료 크레딧을 주는 것과 유사하게 AWS에서는 프리티어가 있다.
1년간, 속도나 용량을 프리티어 기준에만 맞추면 계속 사용할 수 있다.

줄어드는 크레딧보고 조마조마하는 GCP보다 AWS가 사이드 프로젝트 용으로 합리적인 듯?


2. 지역 변경

우측 상단을 보면 지역을 변경할 수 있다.

처음에는 미국 오하이오로 설정이 되어있었는데,
굳이 미국 오하이오 컴퓨터를 빌려서 배포 할 이유가 없으니 서울로 변경.


3. 인스턴스 생성 (EC2)

좌측 상단 서비스 메뉴를 눌러서 EC2 탭으로 들어간다.
GCP와 유사하게 인스턴스를 생성할 수 있다.

배포 할 컴퓨터를 한대 빌리는 것으로 생각하면 된다.

1) 인스턴스 시작

2) AMI (인스턴스의 소프트웨어 세팅)

이름을 정해주고, 어떤 운영체제를 사용할지 정한다.
익숙한 Ubuntu로 진행.

다만 하단의 이 부분은 프리 티어가 사용 가능한 것으로 골라야 한다.

인스턴스 유형도 프리티어 사용 가능한 것으로 설정.

3) 키페어 (인스턴스에 접근할 수 있는 권한을 가지는 파일)

키페어가 있어야만 인스턴스에 접속이 가능하다.
우리는 키페어가 없으니 일단 생성.

이름을 정해주고,
RSA + .PEM파일 형식 그대로 생성
이 형식이 터미널에서 접속하기 편하더라.

키페어는 Desktop이나 찾기 좋은 위치에 두는게 좋다.
코드가 들어있는 폴더에는 두지 않는 것이 좋다. 혹시 Git에 올라가면 난리가 나기 때문.

4) 기타 설정

위 세팅은 손댈 것이 없다. 그대로 생성.


4. EC2 접속

시작을 누르면 이렇게 생성이 되어있다.

이 부분이 접속 가능한 도메인이 된다.

1) 연결

우측 상단에 연결을 누른다.

위와 같은 창이 뜨는데, 우리가 만든 키파일은 SSH 클라이언트 방식으로 접속이 가능하다.

** 이하는 맥북 기준

터미널을 열어서 위 부분을 붙여넣기 하면된다.

이런 에러가 뜬다면?

키파일이 있는 위치에 가서 다시 실행해야 한다.
이래서 키파일 위치가 중요하다.

위와 같이 뜬다면 잘 접속이 된 것.


5. Docker 설치 및 명령어

우선 배포 컴퓨터에 접속을 했는데, 아무것도 설치가 되어 있지 않다.
우리는 도커로 배포 예정이니, 설치를 진행한다.

sudo apt update : 패키지 업데이트

sudo apt install docker: 도커 설치
docker --version: 도커 버전 확인하여 설치 여부 체크
sudo usermod -aG docker ${USER}: 해당 명령어 사용하여 docker 사용 시 sudo없이 가능하도록 설정

sudo apt install git: git clone을 위해 git도 설치
git clone ~~~ : 배포 할 코드를 git clone을 통해 인스턴스에 설치


git clone 받은 파일로 들어가서
docker compose build + docker compose up 실행

이러면 아마 높은 확률로 에러가 뜬다.
내 경우에는 git ignore된 .env파일이 clone되지 않았기 때문이다.

바로 env파일 생성하기.

vi .env.docker : vi는 해당 폴더에 파일을 생성하거나 접근할 수 있다.
i i를 누르면 insert로 모드가 변경되어 추가나 변경이 가능하다.
내 env파일을 복사 붙여넣기한 후 esc로 나간 후, :wq 를 통해 저장후 종료.


다시 docker compose up을 실행 !
서버가 켜지는데 성공했다.
swagger 페이지로 확인.

사실 아직 빼먹은 것이 있다.
DB연결을 안했다.

AWS RDS서비스로 DB도 연결할 수 있는데,
너무 길어져서 그건 다음 게시글로 넘겨야겠다.

profile
우당탕탕 개발자

0개의 댓글