화. 8월 12th, 2025

D: 도커 컴포즈(Docker Compose)는 여러 개의 컨테이너를 하나의 파일로 정의하고 관리할 수 있는 강력한 도구입니다. 초보자도 쉽게 따라할 수 있도록 단계별로 상세하게 설명드리겠습니다!


1. Docker Compose란? 🤔

  • 멀티 컨테이너 애플리케이션을 YAML 파일(docker-compose.yml)로 정의
  • docker run 명령어를 매번 입력할 필요 없이 한 번에 모든 서비스 실행/중지 가능
  • 개발, 테스트, 프로덕션 환경에서 일관성 유지 ⚖️

예시 시나리오
웹 서버(Nginx), 데이터베이스(MySQL), 백엔드(Node.js)를 한 번에 띄워야 할 때 유용합니다.


2. 설치 확인 및 준비 사항 ✔️

  1. Docker 설치: 공식 사이트에서 Docker Desktop 설치
    docker --version  # Docker 버전 확인
  2. Docker Compose 설치 (최신 Docker에는 기본 포함)
    docker-compose --version

3. docker-compose.yml 파일 작성 📝

기본 구조:

version: "3.8"  # 사용할 Compose 버전
services:       # 실행할 서비스(컨테이너) 목록
  웹서비스명:
    image: nginx:latest
    ports:
      - "80:80"

실전 예제: WordPress + MySQL

version: "3.8"

services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: mypassword
    volumes:
      - db_data:/var/lib/mysql

  wordpress:
    image: wordpress:latest
    ports:
      - "8000:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: mypassword
    depends_on:
      - db

volumes:
  db_data:

4. 주요 명령어 실행하기 🚀

# 서비스 시작 (백그라운드 실행)
docker-compose up -d

# 실행 중인 서비스 확인
docker-compose ps

# 로그 보기 (특정 서비스만 보고 싶을 때)
docker-compose logs -f 웹서비스명

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

# 서비스 삭제 (컨테이너까지 제거)
docker-compose down

5. 고급 기능 활용하기 🔧

  1. 환경 변수 사용
    .env 파일에 변수 저장 후 docker-compose.yml에서 참조:

    DB_PASSWORD=secret
    environment:
     MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
  2. 빌드 컨텍스트 활용
    직접 만든 Dockerfile로 이미지 빌드:

    services:
     app:
       build: ./app_directory  # Dockerfile 경로
  3. 의존성 설정
    depends_on으로 서비스 시작 순서 제어:

    services:
     backend:
       depends_on:
         - db

6. 주의 사항 ⚠️

  • 버전 호환성: version 필드는 Docker Engine 버전과 맞출 것
  • 포트 충돌: 호스트의 이미 사용 중인 포트 확인 (예: 80, 3306)
  • 볼륨 권한: 데이터 영속화 시 권한 문제 발생할 수 있음

7. 실습 프로젝트 추천 💻

  1. 간단한 웹 앱: Flask + Redis
  2. 모니터링 시스템: Prometheus + Grafana
  3. 개발 환경: PHP + Apache + MariaDB

마무리 🌟

Docker Compose는 복잡한 인프라 설정을 코드로 관리할 수 있는 핵심 도구입니다. 이 가이드로 기본기를 익히고, 공식 문서와 커뮤니티 예제를 참고하면 금세 고수가 될 거예요!

궁금한 점은 댓글로 남겨주세요. 함께 성장해봐요! 💪

# 모든 서비스 한 번에 정리
docker-compose down --volumes  # 볼륨까지 삭제

Tip: VS Code의 Docker 확장 프로그램을 사용하면 더 편리하게 작업할 수 있습니다.

답글 남기기

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