화. 8월 12th, 2025

D: 🚀 도커 컴포즈(Docker Compose)는 여러 개의 컨테이너를 하나의 파일로 정의하고 관리할 수 있는 강력한 도구입니다. 복잡한 애플리케이션을 구성하는 웹 서버, 데이터베이스, 캐시 시스템 등을 단일 명령어로 실행/중지할 수 있어 개발 및 배포 효율성이 극대화됩니다. 이 가이드에서는 실무에서 자주 사용하는 핵심 명령어와 활용 팁을 상세히 소개합니다!


1️⃣ docker-compose.yml 파일 구조 이해

📁 기본 템플릿 예시 (웹 서버 + MySQL)

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: my-secret-pw
    volumes:
      - mysql_data:/var/lib/mysql
volumes:
  mysql_data:

🔍 주요 필드 설명

  • version: Compose 파일 버전 (3.x 권장)
  • services: 실행할 서비스(컨테이너) 목록
  • volumes: 데이터 영구 저장을 위한 볼륨 설정
  • depends_on: 의존성 관리 (예: web은 db 시작 후 실행)

2️⃣ 실무에서 자주 쓰는 7가지 핵심 명령어

▶️ 1. 컨테이너 실행 & 빌드

# 이미지 빌드 후 실행 (--build: 변경사항 반영)
docker-compose up -d --build
  • -d: 백그라운드 실행 (Detached mode)
  • --build: Dockerfile 변경 시 재빌드 ⚙️

▶️ 2. 실행 중인 컨테이너 확인

docker-compose ps

출력 예시:

NAME                COMMAND                  STATUS
myapp-web-1         "nginx -g 'daemon off;" Up 2 minutes
myapp-db-1          "docker-entrypoint.s…"  Up 2 minutes

▶️ 3. 로그 확인 (실시간 모니터링)

# 전체 서비스 로그
docker-compose logs -f

# 특정 서비스만 (예: web)
docker-compose logs -f web
  • -f: 실시간 로그 스트리밍 📜

▶️ 4. 컨테이너 중지 & 삭제

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

# 컨테이너 완전 삭제 (볼륨 제외)
docker-compose down

# 볼륨까지 모두 제거
docker-compose down -v

▶️ 5. 특정 서비스 재시작

# web 서비스만 재시작
docker-compose restart web

▶️ 6. 실행 중인 컨테이너 접속

# web 서비스의 bash 셸 접속
docker-compose exec web bash

▶️ 7. 환경 변수 파일 사용

.env 파일 생성 후:

DB_PASSWORD=super_secure!

docker-compose.yml에서 참조:

environment:
  MYSQL_PASSWORD: ${DB_PASSWORD}

3️⃣ 고급 활용 팁 💡

🔧 개발 환경 vs 프로덕션 설정

# 프로덕션용 별도 파일 사용
docker-compose -f docker-compose.prod.yml up

🌐 네트워크 사용자 정의

networks:
  my_network:
    driver: bridge
services:
  web:
    networks:
      - my_network

성능 최적화

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

4️⃣ 문제 해결 가이드 🛠️

포트 충돌 시

ERROR: Port 80 is already allocated

netstat -tulnp | grep 80으로 사용 중인 프로세스 확인

의존성 문제

# db가 준비될 때까지 대기 (healthcheck 추가)
healthcheck:
  test: ["CMD", "mysqladmin", "ping"]

🎯 마무리

Docker Compose를 마스터하면 로컬 개발 환경 구성부터 CI/CD 파이프라인까지 효율적으로 관리할 수 있습니다. 🏗️ 위 명령어들을 조합해 다음과 같은 워크플로우를 만들어보세요!

예시 개발 워크플로우:

  1. 코드 수정 → docker-compose up -d --build
  2. 로그 확인 → docker-compose logs -f web
  3. 테스트 후 정리 → docker-compose down

💬 궁금한 점이 있다면 댓글로 질문해주세요! 함께 고민해드리겠습니다 :)

답글 남기기

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