화. 8월 12th, 2025

D: 도커 컴포즈(Docker Compose)는 멀티 컨테이너 도커 애플리케이션을 정의하고 실행하기 위한 필수 도구입니다! ✨ 단순한 YAML 파일 작성만으로 복잡한 컨테이너 환경을 한 번에 관리할 수 있는 마법 같은 도구인데요, 오늘은 초보자도 쉽게 따라할 수 있도록 A부터 Z까지 상세하게 알려드리겠습니다.

1. 🔍 Docker Compose란 무엇인가요?

  • 정의: 여러 개의 도커 컨테이너를 하나의 파일(docker-compose.yml)로 정의하고 관리하는 도구
  • 장점:
    • 단일 명령어(docker-compose up)로 모든 서비스 시작 가능 🚀
    • 컨테이너 간의 네트워크, 볼륨, 의존성 관계를 쉽게 설정
    • 개발/테스트/프로덕션 환경을 일관되게 유지
version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  db:
    image: postgres:13
    environment:
      POSTGRES_PASSWORD: example

2. 📝 YAML 문법 완벽 이해

도커 컴포즈 파일은 YAML 형식으로 작성됩니다. 기본 구조를 익혀봅시다!

기본 구조

version: "3.8"  # 사용할 컴포즈 버전
services:       # 컨테이너 서비스 정의
  서비스명1:
    image: ...
    ports: ...
  서비스명2:
    build: ...
    depends_on: ...
volumes:        # 볼륨 정의
networks:       # 네트워크 정의

자주 사용하는 주요 옵션

옵션 설명 예시
image 사용할 도커 이미지 nginx:alpine
build Dockerfile로 빌드 context: .
ports 포트 매핑 "8080:80"
volumes 볼륨 마운트 ./data:/var/lib/mysql
environment 환경 변수 MYSQL_ROOT_PASSWORD: 1234
depends_on 의존성 설정 - db

3. 🛠️ 실전 예제로 배우기

3.1 웹 애플리케이션 + DB 구성

version: "3.8"
services:
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    depends_on:
      - backend

  backend:
    build: ./backend
    ports:
      - "8000:8000"
    environment:
      DB_HOST: db

  db:
    image: postgres:13
    volumes:
      - db_data:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: secret

volumes:
  db_data:

3.2 로드 밸런서 추가

version: "3.8"
services:
  web:
    image: nginx
    deploy:
      replicas: 3

  lb:
    image: dockercloud/haproxy
    ports:
      - "80:80"
    depends_on:
      - web

4. 🚀 고급 기능 활용하기

4.1 환경 변수 사용 (.env 파일)

# .env 파일
DB_PASSWORD=super_secret
TAG=latest
# docker-compose.yml
db:
  image: postgres:${TAG}
  environment:
    POSTGRES_PASSWORD: ${DB_PASSWORD}

4.2 멀티 스테이지 빌드

services:
  app:
    build:
      context: .
      target: production
    ports:
      - "5000:5000"

5. ⚙️ 배포 전략

5.1 프로덕션 배포

# 프로덕션용 컴포즈 파일 실행
docker-compose -f docker-compose.prod.yml up -d

# 서비스 스케일 조정
docker-compose up -d --scale web=5

5.2 Docker Swarm 모드

# 스웜 초기화
docker swarm init

# 스택 배포
docker stack deploy -c docker-compose.yml myapp

6. 🚨 주의사항 & 팁

  • 버전 호환성: 도커 엔진 버전과 컴포즈 버전 확인 필수!
  • 리소스 제한: mem_limit, cpus 옵션으로 자원 제한 설정
  • 로그 관리: docker-compose logs -f로 실시간 로그 확인
  • 정리 명령: docker-compose down -v로 완전 삭제
# 유용한 명령어 모음
docker-compose up -d    # 백그라운드 실행
docker-compose ps       # 실행 중인 서비스 확인
docker-compose stop     # 서비스 정지
docker-compose restart  # 서비스 재시작

마치며 ✨

도커 컴포즈는 현대적인 애플리케이션 개발에 없어서는 안 될 필수 도구입니다! 이 가이드를 통해 YAML 작성법부터 고급 배포 전략까지 모두 마스터하셨기를 바랍니다. 🎉

궁금한 점이 있으면 언제든 댓글로 질문해주세요! 여러분의 도커 여정을 응원합니다 💪

#도커 #Docker #DevOps #컨테이너 #개발환경

답글 남기기

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