캡스톤 설계 [건물별 소통 플랫폼 BBC]

[백엔드] NestJS 프로젝트 및 데이터 베이스 세팅

softmoca__ 2024. 3. 7. 16:06
목차

 

https://moca9012.tistory.com/category/%EC%BA%A1%EC%8A%A4%ED%86%A4%20%EC%A1%B8%EC%97%85%EC%9E%91%ED%92%88/%EA%B0%9C%EB%B0%9C%20%EC%A7%84%ED%96%89

 

'캡스톤 졸업작품/개발 진행' 카테고리의 글 목록

성장하는 개발자가 되기 위한 기록

moca9012.tistory.com

 

해당 포스팅 부터는 위 이전 습작 블로그에서 진행 했던 프로젝트를 다시 처음부터 개발하며 리팩토링을 하며 기록을 남기는 포스팅입니다.

 

 

https://github.com/softmoca/bbc_api_server

 

GitHub - softmoca/bbc_api_server

Contribute to softmoca/bbc_api_server development by creating an account on GitHub.

github.com

또한 위 깃허브 레포지토리에서 백엔드 프로젝트를 진행하고 있습니다.

 

 

 

 

NESTJS 프로젝트 세팅

npm i -g @nestjs/cli
nest new bbc_api_server

 

우선 docker를 사용해서 myslq 컨테이너를 띄워 개발을 할 예정이다.

 

도커 myslq컨테이너 사용을 위한 local-compose.yaml

services:
  bbc_mysql:
    image: mysql:8.0
    restart: always
    volumes:
      - ./mysql-data:/var/lib/mysql
    container_name: bbc_api_myslq_container
    environment:
      MYSQL_ROOT_USER: ${DATABASE_USERNAME}
      MYSQL_ROOT_PASSWORD: ${DATABASE_PASSWORD}
      MYSQL_DATABASE: ${DATABASE_NAME}
      TZ: Asia/Seoul
    ports:
      - ${DATABASE_PORT}:${DATABASE_PORT}

Tz을 서울로 해서 데이터 베이스에 UTC 시간이 아닌 대한민국의 표준시간으로 나오게 세팅

 

 

환경변수 사용을 위한 config

npm i --save @nestjs/config

 

배포 환경 별 다른 환경변수파일을 사용하기 위핸 cross-env

npm install -D cross-env

typeorm관련 라이브러리

npm install --save @nestjs/typeorm typeorm mysql2

 

 

app.module.ts

    ConfigModule.forRoot({
      isGlobal: true,
      envFilePath:
        process.env.NODE_ENV === "production" ? ".env.prod" : ".env.dev",
    }),

실행 환경별로 다른 환경 변수파일을 사용하는 configmodule

package.json의 script의 NODE_ENV가 production이면 .env.prod를 그 이외엔 개발 시 사용할 .env.dev사용

 

TypeOrmModule.forRoot({
      type: "mysql",
      host: process.env.DATABASE_HOST,
      port: parseInt(process.env.DATABASE_PORT),
      username: process.env.DATABASE_USERNAME,
      password: process.env.DATABASE_PASSWORD,
      database: process.env.DATABASE_NAME,
      synchronize: true,
      entities: [UsersModel, PostModel],
      //logging: true,
      charset: "utf8mb4",
    }),

 

 

도커 실행 환경 별로 다른환경변수 적용  package.json

"docker:local": "docker-compose -f local-compose.yaml --env-file .env.dev up",

도커로 myslq이 잘 작동 되는것을 확인.

 

 

실행 환경 별로 다른환경변수 적용  package.json

"start:dev": "cross-env NODE_ENV=development  nest start --watch",
"start:prod": " cross-env NODE_ENV=production node dist/main",

 

서버도 이상 없이 잘 켜진다.

 

 

 

 

 

마지막으로  dategrip에도 연결이 잘되어 이제 gui로 데이터들을 관리할 수도 있다.