화. 8월 12th, 2025

D: 🚀 개발자라면 반드시 알아야 할 Docker Compose의 모든 것! 복잡한 멀티 컨테이너 애플리케이션을 단 몇 줄의 코드로 관리하는 비법을 공개합니다.

🔍 Docker Compose가 뭔가요?

Docker Compose는 여러 개의 Docker 컨테이너를 하나의 파일로 정의하고 관리할 수 있는 도구예요. 마치 오케스트라 지휘자처럼 관련된 컨테이너들을 조화롭게 관리해줍니다!

예를 들어볼게요.

  • 웹 서버 (Nginx)
  • 애플리케이션 서버 (Node.js)
  • 데이터베이스 (MySQL) 이 3가지 서비스를 각각 따로 실행하는 대신, 한 번에 관리할 수 있답니다.

✨ 왜 Docker Compose를 써야 할까요?

  1. 간편한 설정 📝: 복잡한 docker run 명령어 대신 YAML 파일 하나로 끝!
  2. 일관된 환경 🔄: 개발, 테스트, 프로덕션 환경을 동일하게 유지
  3. 효율적인 관리 ⚡: 여러 서비스를 한 번에 시작/중지 가능
  4. 의존성 해결 🧩: 서비스 간 연결을 자동으로 처리

🛠️ 설치 방법 (이미 Docker가 설치되어 있다면)

# Linux/macOS
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# Windows (Docker Desktop 설치 시 자동 포함)

📂 기본 파일 구조

docker-compose.yml 파일이 핵심이에요! 기본 구조는 이렇습니다:

version: '3.8'  # 사용할 compose 버전

services:  # 관리할 서비스(컨테이너) 목록
  web:     # 웹 서비스
    image: nginx:latest
    ports:
      - "80:80"

  db:      # 데이터베이스 서비스
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password

🎯 실전 예제: WordPress + MySQL

진짜로 유용한 예제를 살펴볼게요!

version: '3.8'

services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress

volumes:
  db_data: {}

이렇게 작성한 후 터미널에서 docker-compose up -d 명령어 하나면 WordPress와 MySQL이 자동으로 연결되어 실행됩니다! ✨

💡 자주 사용하는 명령어 모음

명령어 설명 예시
up 서비스 시작 docker-compose up -d
down 서비스 중지 docker-compose down
ps 실행 중인 서비스 확인 docker-compose ps
logs 로그 확인 docker-compose logs -f
build 이미지 재빌드 docker-compose build

🚨 주의사항 & 팁

  1. 버전 호환성 🔗: Docker Engine 버전과 Compose 파일 버전을 확인하세요
  2. 환경 변수 사용 🌱: .env 파일로 민감한 정보 관리
    # .env 파일 예시
    DB_PASSWORD=mysecretpassword
  3. 볼륨 활용 💾: 데이터 영구 저장을 위해 반드시 볼륨 사용
  4. 리소스 제한 ⚖️: 컨테이너 리소스 제한 설정
    services:
     web:
       deploy:
         resources:
           limits:
             cpus: '0.50'
             memory: 512M

🏗️ 고급 기능

  1. 다중 Compose 파일 🧩: -f 옵션으로 여러 파일 사용
    docker-compose -f docker-compose.yml -f docker-compose.prod.yml up
  2. 스케일링 📈: 서비스 복제본 실행
    docker-compose up --scale web=3
  3. 프로파일 🏷️: 특정 환경에서만 서비스 실행
    services:
     test:
       profiles: ["test"]
       image: busybox

❓ 자주 묻는 질문

Q: Docker Compose와 Kubernetes 차이가 뭐예요?
A: Compose는 단일 호스트용, Kubernetes는 클러스터 환경용입니다.

Q: 기존 Dockerfile과 함께 사용할 수 있나요?
A: 네! build 속성으로 Dockerfile 지정 가능합니다.

services:
  web:
    build: ./dir-with-Dockerfile

Q: Windows에서 경로 문제가 발생해요
A: 볼륨 경로를 WSL2 형식으로 변경하세요:

volumes:
  - /c/path/to/folder:/container/path

🎉 마무리

Docker Compose는 현대적인 애플리케이션 개발에 꼭 필요한 도구예요! 이 가이드만 따라오시면 복잡한 멀티 컨테이너 환경도 쉽게 관리할 수 있을 거예요. 🎊

더 궁금한 점이 있다면 댓글로 남겨주세요! 여러분의 Docker Compose 성공기를 기다립니다. 👏

#Docker #Compose #DevOps #컨테이너 #개발도구

답글 남기기

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