화. 8월 12th, 2025

D: 컨테이너 오케스트레이션을 시작하는 개발자라면 반드시 알아야 할 Docker Compose! 복잡한 멀티 컨테이너 애플리케이션을 손쉽게 관리할 수 있는 이 도구에 대해 깊이 파헤쳐보겠습니다. ✨

1. Docker Compose란?

“여러 컨테이너를 하나의 파일로 정의하고 관리하는 도구”
👉 단일 호스트에서 다중 컨테이너 애플리케이션을 YAML 파일로 정의해 한 번에 실행/관리합니다.

  • 기존 Docker의 문제점:
    docker run -p 8080:80 -e ENV=value... 같은 복잡한 명령어 반복 필요
  • Compose의 해결책:
    docker-compose up 한 줄이면 모든 서비스(DB, 웹서버, 캐시 등) 동시 실행!

예시 시나리오:

웹 앱(React) + API 서버(Node.js) + 데이터베이스(MySQL) + 캐시(Redis) 

2. 핵심 기능 🔥

📌 선언적 구성 (YAML 파일)

docker-compose.yml 예시:

version: '3.8'
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
  db:
    image: postgres:13
    environment:
      POSTGRES_PASSWORD: mysecretpassword

📌 서비스 간 의존성 관리

services:
  backend:
    depends_on:
      - db
      - redis

📌 환경 변수 관리

.env 파일과 연동:

DB_PASSWORD=supersecret
environment:
  DB_PASSWORD: ${DB_PASSWORD}

📌 볼륨/네트워크 통합

volumes:
  db-data:
networks:
  app-network:
    driver: bridge

3. 실전 사용법 🛠️

기본 명령어

# 전체 서비스 시작 (데몬 모드)
docker-compose up -d  

# 특정 서비스만 시작
docker-compose up web  

# 서비스 중지 (컨테이너 유지)
docker-compose stop

# 완전 삭제 (컨테이너+네트워크+볼륨)
docker-compose down -v

로그 확인

# 모든 서비스 로그
docker-compose logs  

# 실시간 로그 스트림
docker-compose logs -f db

확장 기능

  • 프로파일 사용:
    services:
    frontend:
      profiles: ["dev"]
    test:
      profiles: ["test"]
  • 다중 파일 구성:
    docker-compose -f docker-compose.yml -f override.yml up

4. 고급 활용 테크닉 ⚡

1) Health Check

healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost"]
  interval: 30s
  timeout: 10s
  retries: 3

2) 리소스 제한

deploy:
  resources:
    limits:
      cpus: '0.50'
      memory: 512M

3) 빌드+실행 통합

services:
  app:
    build: ./app
    image: myapp:latest

5. 주의사항 및 모범 사례 🚨

  • 버전 호환성: Docker Engine 버전과 맞춰야 함
  • 보안 이슈: .env 파일은 절대 공유하지 말 것!
  • 최적화 팁:
    • restart: unless-stopped로 자동 복구 설정
    • 로컬 개발 시 volumes 사용해 핫 리로드 구현

마치며 🎯

Docker Compose는 로컬 개발 환경 구축부터 CI/CD 파이프라인까지 다양한 영역에서 활용됩니다. 이 가이드를 통해 여러분의 컨테이너 관리가 한층 더 효율적으로 변할 거예요!

💡 추천 학습 경로:

  1. 공식 문서 실습 → 2. 샘플 프로젝트 클론 → 3. 기존 프로젝트 Compose화
# 오늘 바로 시작해보세요!
curl -L "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

궁금한 점은 댓글로 남겨주세요! 다음 시간에는 Kubernetes vs Docker Compose 비교 포스팅으로 찾아올게요 👋

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다