Docker Compose란 무엇인가? 다중 컨테이너 관리 도구
KUKJIN LEE • 4개월 전 작성
Docker Compose는 여러 Docker 컨테이너를 정의하고 관리할 수 있는 도구입니다. 이를 통해 복잡한 애플리케이션을 구성하는 여러 컨테이너를 쉽게 설정하고 동시에 실행할 수 있습니다. Docker Compose는 YAML 파일을 사용하여 애플리케이션의 서비스, 네트워크, 볼륨 등을 정의합니다.
Docker Compose의 주요 기능
-
서비스 정의: 각 서비스는 애플리케이션의 개별 컨테이너를 의미합니다. 예를 들어, 웹 서버, 데이터베이스, 캐시 서버 등이 각각 하나의 서비스로 정의됩니다.
-
간편한 실행:
docker-compose up
명령어로 정의된 모든 서비스를 한 번에 시작할 수 있습니다. 또한docker-compose down
명령어로 모든 서비스를 중지할 수 있습니다. -
환경 설정 관리: 컨테이너의 환경 변수, 네트워크, 볼륨 등의 설정을 한 파일에서 관리할 수 있어 일관된 환경을 유지할 수 있습니다.
-
의존성 관리:
depends_on
옵션을 사용해 서비스 간의 의존성을 정의할 수 있습니다. 이를 통해 서비스의 시작 순서를 제어할 수 있습니다.
왜 Docker Compose를 사용해야 하는가?
예를 들어, 전자 상거래 애플리케이션을 생각해보면, 여러 서비스가 필요합니다:
-
웹 서버 (예: Nginx, Apache)
-
애플리케이션 서버 (예: Node.js, Django)
-
데이터베이스 (예: MySQL, PostgreSQL)
-
캐시 서버 (예: Redis)
-
메시지 큐 (예: RabbitMQ)
이 모든 서비스는 서로 통신해야 하며, 전체 애플리케이션이 제대로 동작하려면 함께 실행되어야 합니다. Docker Compose를 사용하면 이러한 모든 서비스를 한 번에 설정하고 실행할 수 있습니다.
Docker Compose 사용 방법
-
docker-compose.yml
파일 작성 -
docker-compose up
명령어로 서비스 시작 -
docker-compose down
명령어로 서비스 중지
예제: Next.js 프로젝트에서 Docker Compose 사용하기
다음은 Next.js 애플리케이션과 MySQL 데이터베이스를 Docker Compose로 구성하는 예시입니다.
1. docker-compose.yml
파일 작성
version: '3'
services:
nextjs:
image: node:16-alpine
working_dir: /app
volumes:
- .:/app
ports:
- '3000:3000'
command: npm run dev
depends_on:
- db
environment:
- DB_HOST=db
- DB_USER=root
- DB_PASSWORD=example
- DB_NAME=nextjs_db
db:
image: mysql:5.7
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: nextjs_db
2. docker-compose up
명령어로 서비스 시작
docker-compose up
docker-compose.yml
파일에 정의된 모든 서비스를 시작합니다. 터미널에서 로그를 확인하며 컨테이너가 제대로 실행되는지 모니터링할 수 있습니다.
-
docker-compose down
명령어로 서비스 중지
docker-compose down
실행 중인 모든 컨테이너를 중지하고 네트워크와 볼륨을 정리합니다.
Docker Compose를 사용하면 복잡한 멀티 컨테이너 애플리케이션을 효율적으로 관리하고, 개발 및 배포 과정을 단순화할 수 있습니다.