[89] NodeJS 컨테이너의 볼륨, 바인딩 마운트 및 폴리싱 (Polishing)

728x90
반응형

NodeJS 컨테이너 최적화: 볼륨과 개발 환경 설정

 

볼륨 설정으로 데이터 지속성과 개발 효율성 확보

로그 데이터 지속성 (명명된 볼륨)


  
-v logs:/app/logs
  • 로그 파일을 컨테이너 외부에 저장
  • 컨테이너 재시작/제거 후에도 로그 유지

 

소스 코드 실시간 반영 (바인드 마운트)


  
-v /로컬경로:/app
  • 로컬 소스 코드와 컨테이너 내부 동기화
  • 코드 변경 즉시 반영 가능

 

node_modules 보존 (익명 볼륨)


  
-v /app/node_modules
  • 로컬 환경과 충돌 방지
  • 컨테이너 내부 의존성 패키지 유지
  • 바인드 마운트보다 우선 적용(더 구체적인 경로)

 

 

개발 환경 개선

1. Nodemon 설정

package.json에 추가


  
"devDependencies": {
"nodemon": "^2.0.4"
},
"scripts": {
"start": "nodemon app.js"
}

 

Dockerfile 수정


  
CMD ["npm", "start"]

 

  • 코드 변경 시 자동 서버 재시작

 

2. 환경변수를 통한 유연한 설정

  • Dockerfile에 기본값 설정

  
ENV MONGODB_USERNAME=root
ENV MONGODB_PASSWORD=secret

 

코드에서 사용


  
`mongodb://${process.env.MONGODB_USERNAME}:${process.env.MONGODB_PASSWORD}@mongodb:27017/...`

 

실행 시 재정의


  
-e MONGODB_USERNAME=max -e MONGODB_PASSWORD=secret

 

.dockerignore 파일 추가


  
node_modules
Dockerfile
.git
  • 불필요한 파일 복사 방지
  • 빌드 시간 단축
  • 이미지 크기 최적화

 

최종 실행 명령어


  
docker run --name goals-backend \
-v logs:/app/logs \
-v /로컬경로:/app \
-v /app/node_modules \
--rm -d -p 80:80 \
--network goals-net \
-e MONGODB_USERNAME=max \
-e MONGODB_PASSWORD=secret \
goals-node

 

이러한 설정으로 개발 효율성과 데이터 지속성을 모두 갖춘 최적화된 NodeJS 컨테이너를 구성할 수 있습니다.

 

 

 

 

참고

https://www.udemy.com/course/docker-kubernetes-2022

728x90
반응형

댓글