Nginx 리버스 프록시와 Docker Compose를 사용한 다중 컨테이너 웹 애플리케이션

발행: (2025년 12월 21일 오전 03:26 GMT+9)
3 min read
원문: Dev.to

Source: Dev.to

이 프로젝트가 보여주는 내용

  • 다중 컨테이너 애플리케이션 설계
  • 서비스 오케스트레이션을 위한 Docker Compose
  • 리버스 프록시 역할의 Nginx
  • 인터넷에 노출되지 않는 프라이빗 애플리케이션 컨테이너
  • Docker 네트워킹을 통한 서비스 간 통신
  • 애플리케이션과 웹 서버의 명확한 분리
  • 프로덕션 수준의 컨테이너 구조

아키텍처 개요

  • 클라이언트(브라우저)Nginx (호스트에 노출되는 유일한 컨테이너)
  • Node.js 애플리케이션은 Docker 네트워크 내부에서만 접근 가능
  • 컨테이너는 IP 주소가 아니라 서비스 이름을 사용해 통신

프로젝트 구조

project-2-multicontainer/

사용 기술

  • Docker
  • Docker Compose (v2)
  • Node.js (Express)
  • Nginx
  • Linux 기반 컨테이너

로컬에서 프로젝트 실행하기

사전 요구 사항

  • Docker Desktop
  • Docker Compose v2

단계

  1. 레포지토리 복제

    git clone https://github.com/dr-musa-bala/project-2-multicontainer.git
    cd project-2-multicontainer
  2. 컨테이너 빌드 및 시작

    docker compose up --build
  3. 브라우저 열기

    http://localhost:8080 방문

    애플리케이션 스크린샷

보안 및 프로덕션 고려 사항

  • 애플리케이션 컨테이너는 호스트에 포트를 노출하지 않음.
  • 모든 외부 트래픽은 Nginx가 처리.
  • 실제 프로덕션 배포 패턴을 그대로 모방.

왜 중요한가 (DevOps 관점)

  • 애플리케이션 서비스를 격리.
  • 리버스 프록시를 통해 인그레스 트래픽 제어.
  • 선언형 설정을 사용해 재현성 확보.
  • CI/CD 파이프라인으로 확장하기 쉬운 시스템 구축.

향후 개선 사항

  • GitHub Actions를 이용한 CI/CD 추가.
  • 애플리케이션 이미지 Docker Hub에 푸시.
  • 스택을 AWS EC2에 배포.
  • 무중단 업데이트 구현.
  • Let’s Encrypt를 이용한 HTTPS 적용.
Back to Blog

관련 글

더 보기 »