[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
    반응형

    댓글