프레임워크/NestJS

[NestJs] 환경변수 설정하기

트리맨스 2021. 10. 18. 00:01
반응형

 

NestJs 서버를 구축하면서 서버 환경에 따라 달라지는 변수나 설정값들이 있다. 대표적 예시로는 prod 서버와 test 서버가 있을 것이다. prod 서버는 prod db 또는 그에 맞는 환경이 있고, test 서버는 test db 또는 그에 맞는 설정값들이 있다. 서버를 deploy할 때 이러한 구분을 잘 해두면 쉽게 개발 환경과 배포 환경을 구분해서 사용할 수 있다.

 

기존의 방법


기존에는 애플리케이션 실행할 때 인자로 환경변수를 주면서 실행하게 되면 process.env.환경변수 를 이용해서 문자열로 불러와서 사용할 수 있었다. 이를 확장해서 dotenv 환경을 사용했다. dotenv를 사용하게 되면 .env 파일 안에 다양한 환경변수를 입력하여 프로그램 실행 시에 인자로 넣을 수 있다. 

 

NestJs의 방법


공식 문서가 정말 자세하게 나와 있다.

https://docs.nestjs.com/techniques/configuration

 

Documentation | NestJS - A progressive Node.js framework

Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Progamming), FP (Functional Programming), and FRP (Functional Reac

docs.nestjs.com

 

먼저 app.module.ts 파일에 ConfigModule을 불러와서 .env 파일에 있는 설정들을 사용할 수 있다. 나의 경우에는 실행할 때 일일이 변수를 입력하는 것이 비효율적이라 생각하여 dotenv를 사용하기로 했다. nodejs에는 dotenv 모듈이 있지만 nestjs에서는 자체적으로 ConfigModule이 존재하여 이걸 사용하면 된다.

 

app.module.ts 파일에 import 항목 안에 ConfigModule.forRoot 항목을 만들고 envFilePath를 설정한다.

 

그 뒤에는 process.env.환경변수명 을 입력하여 dotenv (.env) 파일 안에 있는 환경변수 설정 파일을 nestjs 식으로 사용이 가능하다. dotenv를 사용하게 되면 중요한 변수들(예 : 시크릿 키, db 보안키 등등)은 보여주지 않으면서 쉽게 공유가 가능하다.

 

app.module.ts

 

.prod.env 또는 .dev.env 파일의 예시

1
2
3
4
5
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=user
DB_PASSWD=12345
DB_NAME=mydb
cs

 

위 설정을 적용하면 TypeOrmModule에서 해당 db로 접속하게 된다. (정상적인 값이 입력되었을 시)

 

 

반응형