피드로 돌아가기
Dev.toDevOps
원문 읽기
3-Container 아키텍처를 통한 Docker Networking 및 Persistence 핵심 메커니즘 분석
I Learned Docker by Running a 3-Container Quiz App
AI 요약
Context
Docker의 이론적 개념과 실제 런타임 환경 간의 인지 격차로 인한 학습 병목 발생. 단순 툴 사용을 넘어 서비스 간 통신, 데이터 지속성, 포트 매핑의 실제 동작 원리 파악을 위한 실습형 아키텍처 필요성 대두.
Technical Solution
- Docker Compose를 통한 quiz-app, mongo, mongo-express의 3계층 분리 구조 설계
- Docker 내장 DNS를 활용하여 IP 주소 대신 서비스 명(mongo)으로 통신하는 Service Discovery 구현
- Host Port와 Container Port의 독립적 매핑을 통한 외부 노출 제어 및 내부 격리 환경 구축
- Named Volume(/data/db) 설정을 통해 컨테이너 생명주기와 무관한 데이터 Persistence 확보
- depends_on 설정을 통한 컨테이너 기동 순서 제어 및 애플리케이션 레벨의 Readiness Check 필요성 검증
- Flask-MongoDB-MongoExpress 간의 데이터 흐름 가시화를 통한 분산 시스템의 상호작용 분석
실천 포인트
- 서비스 간 통신 시 하드코딩된 IP 대신 Docker DNS 서비스 명 사용 여부 확인 - Host-Container 간 포트 매핑 시 내부 포트의 불변성과 외부 포트의 유연성 분리 설계 - 데이터 유실 방지를 위해 Statefull한 서비스에 Named Volume 적용 여부 검토 - depends_on에 의존하지 않고 애플리케이션 내부에 Retry Logic 또는 Health Check 구현