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

댓글