nestJS로 개인프로젝트만들기5

Parker.Park·2022년 8월 9일
0

personal_project1

목록 보기
5/9

복습한다는 생각으로 그리고 새로운것에 대한 도전으로 만들고 있다. 만들면서 새롭게 배운 것들을 정리하려고 한다. 우선 nestJS 프레임워크로 시작하였으며, TypeScript기반이기 때문에 중간 중간 TypeScript도 공부하고 있다. 이전에 ORM으로는 typeORM을 사용하였는데, 이번에는 sequelize라는 ORM을 사용하려고 한다. 마지막으로 팀프로젝트 때 하고는 싶었지만 적용하지 못한 테스트 코드를 익히면서 적용하려고 한다.

docker

docker는 지난 수업때와 팀 프로젝트 당시에도 사용했던 도구이다. 그러나 수업 초반에 복붙수준으로 사용해왔었고, 그 복붙한 것을 팀프로젝트때도 사용했다. Dockerfile이나 docker-compose.yaml에 대해서 어떤 기능을 갖고 추가하는 것에 대해서는 정도만 알고 있었다. 이렇게 처음부터 하려고 하니 하나 하나에 대해서는 설명하기 어려웠다. 그래서 이번에 정리하려고한다.

Dockerfile

Dockerfile에 대해서 정리해보자.

//Dockerfile
FROM node:16.14.2 // node version을 설정

WORKDIR /MYPROJECT/ // 이미지 안에서 작업할 디렉토리 설정
COPY ./package.json /MYPROJECT/ // 의존성 부터 copy
COPY ./yarn.lock /MYPROJECT/
RUN yarn install

COPY . /MYPROJECT/ // 파일들 copy
CMD yarn start:dev // 이미지 안에서 실행

여기서 의존성을 따로 copy를 하였는데, 그 이유는 docker의 경우 이미지를 생성할 때 cache라는 layer를 생성하게 된다고 한다. 그리고 다음 작업에 이미지를 생성하는 경우 이전에 생성된 layer와 비교해보고 똑같으면 그대로 쓴다고 한다.

//Dockerfile
...
COPY . /MYPROJECT/
RUN yarn install
...

만약 위와 같이 의존성을 따로 빼지 않고, 전체 파일을 copy한다면, 약간의 코드파일 내용을 변경할 때도, 새로운 이미지를 생성하고 yarn install을 사용하여 build시간을 늘어나게 할 것이다.

docker-compose

여러 개의 컨테이너를 묶어서 run할 경우 사용하는 것이다. 세부적인 것보다 이번에 준비하면서 도움 되었던것 위주로 정리하고자 한다.

  • docker-compose.yaml 파일 검증
    yaml파일이 format에 정말 예민하기 때문에 처음에 여간 신경쓰이는 일이다. "docker-compose config"명령어로 검증할 수 있다고 한다. -f 옵션을 통해 파일을 지정할 수 있다고 하니 참고 바란다.
  • .env 파일 설정하기
    docker-copose.yaml 파일에 mysql에 대한 설정을 할 경우, 비번을 입력해야 한다. docker-compose파일이 도커 내부로 복사 붙여 넣기가 되기 때문에 불안하였다. 테스트 DB라고 하지만 .env파일을 설정할 방법에 대해 참고하도록 하자.
version: '3.3'
...
  my_database:
    image: mysql:latest
    environment:
      MYSQL_DATABASE: 'myproject'
      MYSQL_ROOT_PASSWORD: '${SQL_PASSWORD}' //.env파일에서 비번을 관리하자.
    ports:
      - 3306:3306

마치면서

개발할때 순서에 맞게 테스트를 하면서 계단식으로 만드는 것이 중요한 것같다. 도커를 보기전 graphQl과 sequlize를 동시에 적용하려다가 에러를 찾고 수정하는 과정이 꽤 어려웠다.

참조

[가장 쉽게 배우는 도커, 얄팍한 코딩사전 Youtube, 2022년08월11일 접속]
https://youtu.be/hWPv9LMlme8

[Node.js 웹 앱의 도커라이징, nodejs docs, 2022년08월11일 접속]
https://nodejs.org/ko/docs/guides/nodejs-docker-webapp/

[Docker 실습하기 03편 - node 서버 실행하기, tistory, 2022년08월12일 접속]
https://sungtae-kim.tistory.com/17

[docker compose yaml 파일 작성, tistory, 2022년08월12일 접속]
https://hoony-gunputer.tistory.com/entry/docker-compose-yaml-%ED%8C%8C%EC%9D%BC-%EC%9E%91%EC%84%B1?category=820435

[[Docker] docker-compose 파일에서 환경설정(.env file) 사용하기, https://blog.leocat.kr/, 2022년08월12일 접속]
https://hoony-gunputer.tistory.com/entry/docker-compose-yaml-%ED%8C%8C%EC%9D%BC-%EC%9E%91%EC%84%B1?category=820435

profile
개발자준비중

0개의 댓글