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 컨테이너를 구성할 수 있습니다.
참고
728x90
반응형
'강의 > Docker & Kubernetes : 실전 가이드' 카테고리의 다른 글
[94] Docker Compose : 무엇이며 왜 사용하는가? (0) | 2025.03.13 |
---|---|
[90] 바인드 마운트로 React 컨테이너에 대한 라이브 소스 코드 업데이트하기 (0) | 2025.03.10 |
[88] 볼륨으로 MongoDB에 데이터 지속성 추가하기 (0) | 2025.03.09 |
[86] 효율적인 컨테이너 간 통신을 위한 Docker 네트워크 추가하기 (0) | 2025.03.08 |
[81-85] Docker로 다중 컨테이너 애플리케이션 구축하기 (0) | 2025.03.08 |
댓글