[86] 효율적인 컨테이너 간 통신을 위한 Docker 네트워크 추가하기

    728x90
    반응형

    Docker 네트워크를 활용한 다중 컨테이너 애플리케이션 구성

     

    Docker 네트워크 설정

    네트워크 생성

    docker network create goals-net

     

    사용 가능한 네트워크 확인

    docker network ls

     

     

    컴포넌트별 컨테이너 설정

    1. MongoDB 컨테이너

    docker run --name mongodb --rm -d --network goals-net mongo
    • 포트 게시(-p) 없음: 동일 네트워크 내 컨테이너만 접근 가능
    • 외부(호스트)에서 직접 접근 불필요

     

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

    docker run --name goals-backend --rm -d -p 80:80 --network goals-net goals-node
    • MongoDB 접근: mongodb://mongodb:27017/course-goals
    • 포트 게시 필요(80:80): 브라우저에서 실행되는 프론트엔드 접근용

     

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

    docker run --name goals-frontend --rm -d -p 3000:3000 -it goals-react
    • 네트워크 미사용: 브라우저에서 실행되므로 Docker 네트워크 미인식
    • 백엔드 접근: localhost:80 사용 (컨테이너 이름 사용 불가)

     

     

    주요 고려사항

    브라우저에서 실행되는 코드 이해

    • React 코드는 브라우저에서 실행됨
    • 브라우저는 Docker 네트워크를 인식하지 못함
    • 컨테이너 이름(goals-backend) 대신 localhost 사용 필요

    네트워크 통신 흐름

    • 백엔드 → MongoDB: 컨테이너 이름으로 직접 통신
    • 프론트엔드 → 백엔드: 브라우저 → localhost → 포트 매핑 → 컨테이너

    포트 게시 전략

    • MongoDB: 포트 게시 불필요
    • 백엔드: 포트 게시 필요 (프론트엔드 접근용)
    • 프론트엔드: 포트 게시 필요 (브라우저 접근용)

    이렇게 설정하면 컨테이너 간 효율적인 네트워크 통신이 가능하면서도, 브라우저에서 실행되는 프론트엔드 코드의 특성을 고려한 구성이 완성됩니다.

     

     

     

     

    참고

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

    728x90
    반응형

    댓글