[Nest.js] 개발 환경 설정(Mac)
author: Dev.ian
createdAt: 2022-12-15
updatedAt: 2022-12-15
1. Nest.js
1-1) Nest.js 설치
-
Install nest.js
$ npm i -g @nestjs/cli
-
version
$ nest -v
8.2.6
1-2) Nest.js 프로젝트 생성
-
아래의 명령어를 실행하면 testApp 이란 디렉토리에 Nest.js 프로젝트가 생성된다.
$ nest new testApp
-
실행 결과
$ nest new ${PROJECT_NAME}
⚡ We will scaffold your app in a few seconds..
CREATE ${PROJECT_NAME}/.eslintrc.js (665 bytes)
CREATE ${PROJECT_NAME}/.prettierrc (51 bytes)
CREATE ${PROJECT_NAME}/README.md (3340 bytes)
CREATE ${PROJECT_NAME}/nest-cli.json (118 bytes)
CREATE ${PROJECT_NAME}/package.json (2005 bytes)
CREATE ${PROJECT_NAME}/tsconfig.build.json (97 bytes)
CREATE ${PROJECT_NAME}/tsconfig.json (546 bytes)
CREATE ${PROJECT_NAME}/src/app.controller.spec.ts (617 bytes)
CREATE ${PROJECT_NAME}/src/app.controller.ts (274 bytes)
CREATE ${PROJECT_NAME}/src/app.module.ts (249 bytes)
CREATE ${PROJECT_NAME}/src/app.service.ts (142 bytes)
CREATE ${PROJECT_NAME}/src/main.ts (208 bytes)
CREATE ${PROJECT_NAME}/test/app.e2e-spec.ts (630 bytes)
CREATE ${PROJECT_NAME}/test/jest-e2e.json (183 bytes)
# 자신이 사용하는 패키지 관리 프로그램(npm, yarn, ... etc)을 선택
? Which package manager would you ❤️ to use? npm
✔ Installation in progress... ☕
🚀 Successfully created project ${PROJECT_NAME}
👉 Get started with the following commands:
$ cd ${PROJECT_NAME}
$ npm run start
Thanks for installing Nest 🙏
Please consider donating to our open collective
to help us maintain this package.
🍷 Donate: https://opencollective.com/nest
1-3) Nest.js 프로젝트 앱 실행
-
프로젝트 디렉토리로 이동하여 run
localhost:3000
으로 접속하면 Hello World! 가 웹페이지에 나온다
# move project directory
$ cd ${PROJECT_NAME}
# run project app
$ npm run start
> ${PROJECT_NAME}@0.0.1 start
> nest start
[Nest] 12705 - 2022. 05. 28. 오후 9:11:55 LOG [NestFactory] Starting Nest application...
[Nest] 12705 - 2022. 05. 28. 오후 9:11:55 LOG [InstanceLoader] AppModule dependencies initialized +162ms
[Nest] 12705 - 2022. 05. 28. 오후 9:11:55 LOG [RoutesResolver] AppController {/}: +5ms
[Nest] 12705 - 2022. 05. 28. 오후 9:11:55 LOG [RouterExplorer] Mapped {/, GET} route +4ms
[Nest] 12705 - 2022. 05. 28. 오후 9:11:55 LOG [NestApplication] Nest application successfully started +3ms
2. PostgreSQL
Docker 를 이용해 PostreSQL 을 사용하도록 설정
2-1) Docker-Compose 파일 작성
-
프로젝트의 Root 위치에
docker-compose.yaml
파일을 생성하여 아래의 내용을 작성version: '3'
services:
db:
image: postgres:14
ports:
- '5433:5432'
restart: always
environment:
POSTGRES_USER: DB_유저명
POSTGRES_PASSWORD: DB_비밀번호
POSTGRES_DB: DB이름
container_name: postgres-db
volumes:
- ./docker/pgdata:/var/lib/postgresql/data
volumes:
pgdata:
2-2) Docker Build
-
Docker Desktop 를 실행한 뒤, 아래의 명령어를 실행한다.
-
yaml에 정의된 컨테이너 빌드 및 실행
$ docker-compose up --build
-
참고: 그 외의 실행 옵션
# Docker 로그를 보면서 실행
$ docker-compose up
# 백그라운드에서 실행
$ docker-compose up -d -
동작 확인
- Docker Desktop 의 [Containers/Apps] 메뉴에서 yaml 파일의 container_name 이 실행되는 지 확인
- 프로젝트의 Root 위치에 docker/pgdata 라는 디렉토리가 생성되었는지 확인
.gitignore
파일에 등록
- DB에 접속이 되는지 확인
- DBeaver 등의 DB Client 를 사용하는 경우
- Database:
services.db.POSTGRES_DB
의 값 - Username:
services.db.POSTGRES_USER
의 값 - Password:
services.db.POSTGRES_PASSWORD
의 값 - Port: 5433. (
services.db.ports
값)
- Database:
- DBeaver 등의 DB Client 를 사용하는 경우
종료
-
Docker Desktop: [Containers/Apps] 메뉴에서 정지
-
Terminal:
ctrl + c
ordocker stop ${CONTANINER_NAME}
# 현재 실행 중인 Container 확인
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3fd4fds3fs31 postgres:14 "docker-entrypoint…" About an hour ago Up 9 seconds 0.0.0.0:5433->5432/tcp postgres-db
# Container Name 으로 종료
$ docker stop postgres-db
# Container Id 로 종료할 경우
$ docker stop 3fd4fds3fs31
3. NoSQL
Docker 를 이용해 DynamoDB or Redis 를 로컬에서 실행할 수 있도록 한다.
Dynamodb-local
- AWS에서 제공하는 Dynamodb의 로컬 버전 Docker Container
docker-compose.yaml 파일 수정
- services 에
dynamodb-local
을 추가
version: '3'
services:
db:
image: postgres:14
...
(중략)
...
dynamodb-local:
command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data"
image: "amazon/dynamodb-local:latest"
container_name: dynamodb-local
ports:
- "8000:8000"
volumes:
- "./docker/dynamodb:/home/dynamodblocal/data"
working_dir: /home/dynamodblocal
-
Docker Container 를 실행
$ docker-compose up -d
Starting dynamodb-local ... done
Creating postgres-db ... done
동작 확인
-
프로젝트 Root 위치에 docker/dynamodb 디렉토리가 생성되었는지 확인
-
아래의 명령어를 실행하여 결과가 출력되는지 확인
# dynamodb table 리스트 확인
$ aws dynamodb list-tables --endpoint-url http://localhost:8000-
정상 연결 된 경우
{
"TableNames": []
} -
연결되지 않은 경우
Could not connect to the endpoint URL: "http://localhost:8000/"
-
Dynamodb-admin
- AWS Dynamodb-local 을 데이터를 GUI 로 사용할 수 있는 어플리케이션