[코팩] NestJs 도커 사용해보기 (DB 연결)

Seong Hyeon Kim·2024년 2월 20일
0

NestJs

목록 보기
8/14


도커를 사용하는 이유

프로젝트 세팅 설치 가이드
1.Node.js 설치
2.yarn 혹은  npm 설치
3.NestJs ClI 설치
4.PostgreSQL 설치
5.MongoDB 설치
6.각종 환경변수 세팅
  • 도커는 서로간의 다른 실행환경에 따른 오류를 줄이고 일관된 실행환경을 구축해서 안정적으로 만들고 또한 위에서 작성한 프로젝트 세팅의 일련의 과정들을 좀더 쉽고 편하게 하고 또한 배포하는 과정에서도 저러한 과정들을 편리하게 하기위해서 생성된 컨테이너 기술입니다.

  • 도커의 특징중 하나로는 항상 똑같은 환경에서 똑같이 실행될 수 있도록 하는게 포인트 입니다

정리하자면

특정프로그램을 실행할때 필요한 환경과 패키지들 그리고 명령어들을 하나의 컨테이너로 도커파일이라는 하나의 컨테이너로 묶어서 어떤 환경에서도 도커만 설치되어있다면 그 컨테이너를 실행할 수 있게 한다가 가장 핵심적인 목표입니다.





도커 compose 이론

도커라는 편리한 컨네이너 기술을 사용하면서 NestJs 를 담은 컨테이너, MySQL 을 담은 컨테이너, Redis 를 담은 컨테이너 등등 너무 많은 컨테이너를 다루다보니 관리하기가 어려워졌고 이 컨테이너들을 관리하기 위해서 나온게 쿠버네티스, 도커 compose, 도커 swarm 입니다.

실질적으로 전 세계 클라우드의 70~80% 는 쿠버네티스를 사용할만큼 많이 사용되는 기술이고,
도커 compose 역시 비슷한 용도로 생겨났으나 쿠버네티스에 많이 밀린 상황입니다.


도커 컴포즈는 여러개의 기기 혹은 하드웨어에서 사용되지 않고 세부화된 하나의 기기에서 여러개의 컨테이너를 돌리기에 최적화 되어있고,

쿠버네티스의 경우는 처음부터 여러개의 기기 혹은 하드웨어에서 컨테이너를 돌리는 목적이기 때문에 실질적으로는 조금 용도가 다릅니다.


그래서 프로덕션 환경에서는 쿠버네티스, 로컬 호은 개발환경에서는 docker compose 를 개발하는게 일반적입니다.

그리고 도커 컴포즈는 yml 파일로 이뤄져 있어서 yml 문법으로 작성되어야 합니다.


도커 설치후 Postgresql실행해보기

https://www.docker.com/

1. 위 사이트에서 도커를 설치후 미리 실행을 시켜줍니다.


2. 프로젝트 폴더의 최상단에 새로운 파일을 만들고 파일명은 docker-compose.yaml 라고 작성해줍니다.


3. 파일안에 작성될 문법은 다음과 같습니다.

services:
  postgres:
    image: postgres:15
    restart: always
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: 원하는 비밀번호로 해주세요
      POSTGRES_DB: postgres

각각의 내용들에 관한 설명은 다음과 같습니다.

  • services ==> 어떤 정보를 정의할건지 여러개의 서비스들을 정의하게 될텐데 이 실행할 서비스를 정의하는 단계를 선언하는 부분입니다.

  • postgres ==> 이 단계에서의 네이밍은 사실 다르게작성해도 상관없지만 postgresql 을 실행해줄것이기 때문에
    명시적으로 좋은 명칭인 postgres 라고 작성을 해줍니다.

  • image: postgres:15 ==> 이미지라고 작성후 postgres 라고 작성하면 밑줄이 생기는것을 확인할 수 있는데요, 이부분은 도커 허브에서 직접 데이터를 가져오는것을 명시적으로 알려주는 부분이고 이 버전을 15로 쓰겠다라는 의미입니다.

  • restart: always ==> 실행을 할때마다 재시작 한다는 의미로 작성된 부분입니다.

  • volumes: ==> 도커 이미지 안에서 생성된 파일은 도커안에서만 존재하기때문에 도커를 종료하면 전부다 날라가버립니다. 그래서 postgres 에서 생성된 데이터를 host os 안에 맵핑해줘서 미리 백업해두기 위한 용도로 작성된 부분입니다.
    여기서는 postgres-data 라는 폴더를 미리 만들어줘서 그 곳을 맵핑할곳으로 지정해둔 부분이고, /var/lib/postgresql/data 는 이미지 안에 존재하는 부분입니다.

  • 여기서 /var/lib/postgresql/data 가 의미하는게 뭐냐면 이미지 상에서 이 위치가 데이터를 저장했을때 데이터가 저장되는 위치입니다.

  • ports: ==> 원래 postgresql 은 5432 포트에서 실행되는게 기본이기 때문에 이미지상읲 포트와 postgresql 포트를 연동해준다 라고 보면 되겠습니다.

  • POSTGRES_USER,POSTGRES_PASSWORD,POSTGRES_DB => 데이터베이스에 대한 추가적인 정보를 작성하는 부분입니다

4. 도커 컴포트 실행

이렇게 작성이 완료되면 이제 터미널창에서 docker-compose up 이라고 입력해주면 실행이 잘 되는것을 볼 수 있습니다.

그리고 아까 만들어둔 폴더에도 파일들이 생성되는것을 볼 수 있습니다.

5. vs 코드에서 익스텐션 설치 후 postgresql 연동하기

  • 이 익스텐션을 설치하고ㅓ 실행하면 vs코드상에서 지금 실행중인 postgresql 데이터 베이스를 들여다보고 확인할 수 있습니다.

5-1. 빠른실행창 을 열어서 >postgresql:add connection 를 입력후 선택 해줍니다.

5-2. 실행될 호스트 주소를 작성합니다 (우리는 로컬로 할것이기 때문에 127.0.0.1)

5-3. 아까 작성해둔 유저 아이디부터 비밀번호, 포트번호 차례대로 입력합니다

5-5. 여기서는 standard connection 을 선택 후 postgres 를 선택해줍니다.

5-6. 이제 사용될 db 의 이름을 임의로 지어서 작성해줍니다


6. 이제 vs코드 외쪽에 생성된 코끼리 아이콘을 클릭해보면 연동이 잘 된것을 확인할 수 있습니다.

profile
삽질도 100번 하면 요령이 생긴다. 부족한 건 경험으로 채우는 백엔드 개발자

0개의 댓글