오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

Web Programming/NestJS

[NestJS] AWS Elastic BeanStalk 배포

junha6316 2022. 2. 23. 21:51

NestJS를 배포하면서 꽤 많은 문제를 겪었다. 이때 찾아본 문서를 정리해둔다.

 

먼저 ELB(Elastic Beanstalk)에서 NodeJS용 이미지는 nginx와 같이 배포되었을 때 로컬의 8081포트와 80포트를 연결해준다.

무슨 말이냐면 80포드(일반적으로 http에서 사용하는 포트)에서 들어온 요청을 그대로 로컬의 8081포트에 연결해준다는 뜻이다.

 

그런데 NestJS는 기본포트가 3000이다. 따라서 포트를 변경해줘야하는데 다양한 방법으로 변경할 수 있다. 나는 주로 아래와 같은 방법을 선호한다. 환경변수로 PORT값을 설정해주는 방법이다. 

import { NestFactory } from "@nestjs/core";
import { AppModule } from "app.module";


async function bootstrap() {
  const app = await NestFactory.create(AppModule, {});
  const port = process.env.PORT || 3000;
  console.log("Server running at http://127.0.0.1:" + port + "/");
  await app.listen(port);
}

ELB에서 환경변수 설정하는 방법은 환경 -> 구성 -> 소프트웨어 로 들어가서 맨 마지막에 보면 환경변수가 있다. 작성해주면 된다. 

이렇게 생긴 창을 찾아보자.. 다 적기에는 너무 많다..

빌드 언어는  빌드시에 메모리를 상당히 많이 잡아먹어서 빌드시에 heap out of memory 같은게 날 수 있다. 이 때는 ELB를 구성하고 있는 기본 EC2 인스턴스의 타입을 올려주자!

 

아래 글은 직접 파일을 올려서 배포하는 방법이다.

https://stackoverflow.com/questions/65864374/deploying-nestjs-application-on-elastic-beanstalk/66038843#66038843