docker-compose 도커를 이용하여 개발하기 - 모듈 동기화
저번작업에 이어 이번에는 node_modules를 동기화 하겠습니다. 자세한 내용은 이전 글을 참고해 주시기 바랍니다.
이전글 : docker-compose 도커를 이용하여 개발하기 - 코드 동기화
1. module을 동기화하기
저번과 마찬가지로 NestJS을 이용하여 도커 개발환경을 구성하는데 이번에는 node_modules를 실시간으로 동기화 하는 작업을 하겠습니다.
먼저 .dockerignore 파일을 작성합니다.
# ./.dockerignore
node_modules
package.json
package-lock.json
npm-debug.log
dist
그리고 기존의 도커파일(Dockerfile)을 수정합니다.
# ./Dockerfile
# Base 이미지를 사용합니다.
FROM node:18.18.0
# Docker Container안의 디렉토리를 설정합니다. 설정을 안할시 Root리렉토리로 설정됩니다.
WORKDIR /nestjs
# package.json을 도커 이미지에 복사합니다.
# COPY package.json /nestjs
# COPY package-lock.json /nestjs
# package데이터를 근거로 npm을 설치한다.
# RUN npm install
# 해당 디렉토리에 있는 모든 파일, 폴더를 도커 이미지로 복사합니다.
# .dockerignore에 있는것은 제외
COPY . /nestjs
# 해당 도커 이미지에서 build를 해서 dist폴더를 생성합니다.
# RUN npm run build
# 해당 이미지의 포트를 EXPOSE합니다.
# 표시만 할뿐 실제 도커 컨테이너의 포트가 노출되지 않는다.
EXPOSE 3000
# 도커 이미지를 이용하여 컨테이너를 생성시 nodejs 자동 실행(development mode)
CMD ["npm","run","start:dev"]
다음은 docker-compose.yaml파일을 수정합니다.
version: '3'
# ./docker-compose.yaml
# services에서는 여러개의 컨테이너를 생성할수 있습니다.
services:
backend:
# 이미지 생성을 위해 해당 디렉토리에 있는 Dockerfile를 build한다.
# docker-compose파일에 같은경로로 Dockerfile이 있을시 '.' 을 찍으면 된다.
# 같은경로가 아닐시 상대경로로 지정해서 실행한다.
build:
context: ./
dockerfile: Dockerfile
ports:
- '4000:3000'
#개발용이기 때문에 코드수정이 있으면 컨테이너에서도 반영
volumes:
# src의 코드를 컨테이너와 실제 IDE와 동기화
- ./src:/nestjs/src
- ./node_modules:/nestjs/node_modules
- ./package.json:/nestjs/package.json
- ./package-lock.json:/nestjs/package-lock.json
# 도커가 저장할 로그를 지정한다.
logging:
driver: 'json-file'
options:
max-file: '3'
max-size: '10m'
"./node_modules:/nest/node_modules"부분이 IDE에 있는 "node_modules"를 동기화 해주는 부분입니다.
이제 변화를 확인하기 위해서 Swagger npm을 설치하겠습니다. 자세한 모듈 적용방법은 아래 링크를 참고해 주시기 바랍니다.
링크 : NestJS에 Swagger(스웨거) Document(문서)를 적용
해당 npm을 install하고 링크대로 main.ts파일을 수정하고 저장하면 작업이 완료 됩니다.
이대로 진행하면 Swagger문서가 정상적으로 나오는 것을 확인할수 있습니다.
위와 같이 개발을 하면 도커 컨테이너에서 발생되는 문제를 미리 확인할수 있습니다.
gitHubLink : https://github.com/Alex-Choi0/docker_sync_development.git
댓글
댓글 쓰기