[81-85] Docker로 다중 컨테이너 애플리케이션 구축하기

    728x90
    반응형

     

    Docker로 다중 컨테이너 애플리케이션 구축하기

     

    애플리케이션 구성 요소

    MongoDB 데이터베이스

    • 데이터 저장소
    • 데이터 지속성 필요
    • 접근 제한 설정

    Node.js 백엔드

    • REST API 제공
    • 로그 파일 지속성 필요
    • 소스 코드 변경 실시간 반영

    React 프론트엔드

    • 단일 페이지 애플리케이션(SPA)
    • 소스 코드 변경 실시간 반영
    • 백엔드 API와 통신

     

    컴포넌트별 도커화 과정

    1. MongoDB 컨테이너

    docker run --name mongodb --rm -d -p 27017:27017 mongo
    • 공식 MongoDB 이미지 사용
    • 포트 27017 노출
    • 백그라운드 실행

     

    2. Node.js 백엔드 컨테이너

    Dockerfile

    FROM node
    WORKDIR /app
    COPY package.json .
    RUN npm install
    COPY . .
    EXPOSE 80
    CMD ["node", "app.js"]

    빌드 및 실행

    docker build -t goals-node .
    docker run --name goals-backend --rm -d -p 80:80 goals-node

    문제 해결:

    • MongoDB 연결 문제: localhost 대신 host.docker.internal 사용
    • 포트 노출: -p 80:80로 호스트와 컨테이너 포트 매핑

     

    3. React 프론트엔드 컨테이너

    Dockerfile

    FROM node
    WORKDIR /app
    COPY package.json .
    RUN npm install
    COPY . .
    EXPOSE 3000
    CMD ["npm", "start"]

    빌드 및 실행:

    docker build -t goals-react .
    docker run --name goals-frontend --rm -d -it -p 3000:3000 goals-react

    주의사항:

    • React 개발 서버는 -it 플래그 필요 (인터랙티브 모드)
    • 이 플래그 없이 실행 시 컨테이너가 즉시 종료됨

     

     

    핵심 고려사항

    1. 통신 설정
      • 백엔드에서 MongoDB 접근: host.docker.internal 사용
      • 프론트엔드에서 백엔드 접근: 포트 매핑 필요
    2. 지속성 관리
      • 데이터베이스 데이터
      • 로그 파일
      • 개발 코드 변경사항
    3. 포트 매핑
      • MongoDB: 27017:27017
      • 백엔드: 80:80
      • 프론트엔드: 3000:3000

    이 설정으로 세 가지 주요 컴포넌트가 각각 독립적인 컨테이너에서 실행되면서도 서로 효과적으로 통신할 수 있는 다중 컨테이너 애플리케이션이 구성됩니다.

     

     

     

     

     

    참고

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

    728x90
    반응형

    댓글