Docker Compose란?
Docker Compose는 여러 컨테이너로 구성된 애플리케이션을 하나의 YAML 파일로 정의하고 단일 명령으로 띄울 수 있게 해주는 도구입니다. docker compose up -d 한 줄로 웹 서버 + DB + 캐시 등 다중 컨테이너를 일괄 실행/중지/재시작할 수 있습니다.
주요 키 설명
version: Compose 파일 포맷 버전 (Compose V2부터는 생략 가능)services: 컨테이너 단위 서비스 정의image: 사용할 Docker 이미지ports: 호스트:컨테이너 포트 매핑 (예: "8080:80")environment: 환경 변수volumes: 볼륨 마운트 (호스트 경로:컨테이너 경로 또는 named volume)depends_on: 다른 서비스 시작 순서restart: 재시작 정책 (no, always, on-failure, unless-stopped)networks: 서비스를 연결할 네트워크
프리셋 10종 상세
- Nginx: 리버스 프록시·정적 호스팅 (포트 80, 443)
- PostgreSQL: 관계형 DB (포트 5432, 데이터 볼륨 포함)
- MySQL: 관계형 DB (포트 3306)
- MariaDB: MySQL 호환 (포트 3306)
- Redis: 인메모리 캐시·메시지 브로커 (포트 6379)
- MongoDB: NoSQL 문서 DB (포트 27017)
- Node.js: Node 애플리케이션 컨테이너 (포트 3000)
- Python: Python 웹앱 (포트 8000)
- PHP-FPM: PHP 백엔드 (Nginx와 연동)
- WordPress: WP + MySQL 페어 (포트 8080)
실행 명령어
docker compose up -d: 백그라운드 실행docker compose down: 종료 (볼륨 보존)docker compose down -v: 볼륨까지 삭제docker compose logs -f [service]: 로그 실시간 보기docker compose ps: 상태 확인
자주 묻는 질문 (FAQ)
Q. v3와 v2의 차이는?
A. v3는 Swarm mode 호환을 위해 일부 옵션(resource limits 등)이 제거되었습니다. 단일 호스트에서는 v2.4도 여전히 강력합니다. 현재는 'Compose V2' CLI를 쓰면 version 키 자체를 생략해도 됩니다.
Q. 네트워크는 자동 생성되나요?
A. 별도로 지정하지 않으면 Compose가 프로젝트명_default 네트워크를 자동 생성합니다. 본 빌더는 명시적 네트워크 이름을 부여해 서비스 간 통신을 명확히 합니다.
Q. 환경 변수에 비밀번호가 노출되어도 되나요?
A. 운영 환경에서는 .env 파일이나 Docker Secrets를 사용하세요. 본 빌더는 학습/테스트용 기본값을 채워둡니다.
Q. 볼륨은 어디에 저장되나요?
A. Linux는 /var/lib/docker/volumes/, Mac/Windows는 Docker Desktop VM 내부입니다. docker volume inspect로 정확한 경로 확인 가능.