2025. 6. 11. 13:00ㆍNode.js
2025.06.05 - [Node.js] - (Node.js) Nestjs + MSA 기반 서버 구축 (1)
(Node.js) Nestjs + MSA 기반 서버 구축 (1)
● 순서 요지환경 설정 및 Lib 설치코드 구현테스트 통신마무리 1. 요지우연히 NestJS + MSA + MongoDB를 기반으로 한 서버를 docker-compose로 구축할 수 있는 기회가 생겼었다그래서 해당 구축한 내용을
developerjjh.tistory.com
● 순서
- MongoDB 설치
- docker 설치
- docker-compose로 실행
지난 게시물에 이어서 연결된 서버에 요청온 데이터들을 별도의 저장소인 DB내에 저장하는 과정을 기록하려고 한다
DB는 MongoDB로 정해서 진행할 예정이다
MongoDB 및 몽구스 설치
# nestjs 몽구스 모듈 설치
npm install @nestjs/mongoose mongoose
modules 설정
- 해당 파일에서 몽구스를 이용해서 모듈을 추가
// board/src/app.modules.ts
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { BoardSchema } from './schema/board.scheme';
@Module({
imports: [
MongooseModule.forRoot('mongodb://localhost/nest'),
MongooseModule.forFeature([{ name: 'Board', schema: BoardSchema }]),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
Schema 생성
- mongoDB내 사용할 테이블의 스키마를 정의하는 파일 생성
// board/src/schema/board.schema.ts
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document, Types } from 'mongoose';
export type BoardDocument = Board & Document;
@Schema()
export class Board {
@Prop({ required: true })
title: string;
@Prop()
text: string;
}
export const BoardSchema = SchemaFactory.createForClass(Board);
이렇게 설정하고
# board 서비스 실행
npm run start:dev
하니... 덜컥....
mongoDB가 로컬에서 실행되고 있지 않아서 생긴 에러를 만날 수 있다

어쩌지 어쩌지... 검색하고 찾아보고 알아보다가
계속 각 서비스 마다 터미널을 열어서 실행했던 것도 불편하고
mongodb를 로컬에 설치해서 환경변수 설정 하는 등 까다로워서
한번에 실행하고 mongdb도 실행 할 수 있도록
docker와 docker-compose를 이용해보기로 했다
Docker 설치 및 설정
- docker desktop 프로그램을 설치
- docker-compose.yml 파일 생성
- 각 서비스별 Dockerfile 생성
docker desktop은 설치하는 법이 어렵지 않아서 간단히 설치를 해주고
파일 예제는 다음과 같다
docker-compose.yml
- 해당 파일은 프로젝트 최상단(root)에 생성
# docker-compose.yml
services:
gateway:
build:
context: ./gateway
dockerfile: Dockerfile
ports:
- '3000:3000'
depends_on:
- board
networks:
- nest-net
board:
build:
context: ./board
dockerfile: Dockerfile
ports:
- '4002:4002'
environment:
- MONGO_URI=mongodb://${{mongodb이름}}:${{비밀번호}}@mongodb:27017/board?authSource=admin
depends_on:
- mongodb
networks:
- nest-net
mongodb:
image: mongo
container_name: mongodb
restart: always
ports:
- '27017:27017'
environment:
MONGO_INITDB_ROOT_USERNAME: ${{mongodb이름}}
MONGO_INITDB_ROOT_PASSWORD: ${{비밀번호}}
networks:
- nest-net
networks:
nest-net:
driver: bridge
각 서비스별 Dockerfile
- 해당 파일을 각 서비스별로 생성
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["node", "dist/main.js"]
- node버전은 22
- 컨데이너 내부에서 작업할 디렉토리를 /app으로 설정
- package.json과 lock.json을 복사
- 의존성 설치
- 빌드
- 포트는 3000번으로 설정
- 빌드내 dist/main.js로 실행
여기까지 왔다면 우리는 이제 실행을 해볼 수 있다
docker 명령어를 실행하기 전에 docker desktop은 실행해둬야 한다!
# 프로젝트 최상단(root)
# docker-compose.yml 파일이 있는 곳
docker compose up --build
#혹은
docker-compose -up --build
※ 만일 mongodb를 설치하지 않았다면 아래의 docker 명령어로 설치
docker run -d --name mongodb -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=${{mongodb이름}} -e MONGO_INITDB_ROOT_PASSWORD=${{설정 비밀번호}} mongo
`docker-compose up --build` 명령어가 정상적으로 동작한다면 아래와 같은 화면을 볼 수 있다
두 화면에 찍히는 로그들은 같은 내용들이다, 본인이 좀 더 편한 화면으로 보면 좋을 듯 하다
여기까지 설정하고 다음 게시물에서는 게시물을 등록해서 데이터베이스에서 확인하고 조회할 수 있도록 해보겠습니다~

'Node.js' 카테고리의 다른 글
(Node.js) Nestjs + MSA 기반 서버 구축 (3) - 게시물 CRUD (0) | 2025.06.21 |
---|---|
(Node.js) Nestjs + MSA 기반 서버 구축 (1) (0) | 2025.06.08 |
(Node.js) nodemailer로 파일첨부 (0) | 2024.06.02 |
(Node.js) 업로드 이미지 리사이징 (0) | 2024.06.01 |
(Node.js) 서버에서 차트 그려서 이미지로 변환 (0) | 2024.02.25 |