강의/Docker & Kubernetes : 실전 가이드
[81-85] Docker로 다중 컨테이너 애플리케이션 구축하기
JJIMJJIM
2025. 3. 8. 14:05
728x90
반응형
SMALL
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 플래그 필요 (인터랙티브 모드)
- 이 플래그 없이 실행 시 컨테이너가 즉시 종료됨
핵심 고려사항
- 통신 설정
- 백엔드에서 MongoDB 접근: host.docker.internal 사용
- 프론트엔드에서 백엔드 접근: 포트 매핑 필요
- 지속성 관리
- 데이터베이스 데이터
- 로그 파일
- 개발 코드 변경사항
- 포트 매핑
- MongoDB: 27017:27017
- 백엔드: 80:80
- 프론트엔드: 3000:3000
이 설정으로 세 가지 주요 컴포넌트가 각각 독립적인 컨테이너에서 실행되면서도 서로 효과적으로 통신할 수 있는 다중 컨테이너 애플리케이션이 구성됩니다.
참고
728x90
반응형
LIST