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: 포트 게시 불필요
- 백엔드: 포트 게시 필요 (프론트엔드 접근용)
- 프론트엔드: 포트 게시 필요 (브라우저 접근용)
이렇게 설정하면 컨테이너 간 효율적인 네트워크 통신이 가능하면서도, 브라우저에서 실행되는 프론트엔드 코드의 특성을 고려한 구성이 완성됩니다.
참고
728x90
반응형
'강의 > Docker & Kubernetes : 실전 가이드' 카테고리의 다른 글
[89] NodeJS 컨테이너의 볼륨, 바인딩 마운트 및 폴리싱 (Polishing) (0) | 2025.03.09 |
---|---|
[88] 볼륨으로 MongoDB에 데이터 지속성 추가하기 (0) | 2025.03.09 |
[81-85] Docker로 다중 컨테이너 애플리케이션 구축하기 (0) | 2025.03.08 |
[72-80] Docker 컨테이너 통신의 세 가지 방식과 솔루션 (0) | 2025.03.03 |
[68, 69, 70, 71] 도커 컨테이너 통신 패턴 3가지 (0) | 2025.02.25 |
댓글