복잡한 애플리케이션을 개발하거나 운영하다 보면, 하나의 컨테이너만으로는 충분하지 않을 때가 많습니다. 예를 들어, 웹 서버와 데이터베이스 서버를 함께 운영하거나, 여러 개의 마이크로서비스를 동시에 실행해야 할 때가 대표적인 사례입니다.
이때 유용하게 활용되는 도구가 바로 Docker Compose입니다.
Docker Compose란?
Docker Compose는 여러 개의 Docker 컨테이너를 하나의 서비스 묶음으로 정의하고 관리할 수 있게 도와주는 도구입니다.
즉, 복잡한 컨테이너 환경을 하나의 compose.yml 파일로 정의해두면, 한 줄 명령어로 전체 서비스를 실행하거나 중지할 수 있습니다.
왜 사용할까?
1. 여러 개의 컨테이너를 효율적으로 관리할 수 있다.
웹 서버, 데이터베이스, 캐시 서버 등 다양한 컨테이너를 사용하는 복잡한 애플리케이션의 경우, 각각의 컨테이너를 따로 실행하고 연결하는 건 매우 번거로운 작업입니다.
Docker Compose를 사용하면 여러 개의 컨테이너를 하나의 프로젝트처럼 구성해 함께 실행하고 종료할 수 있어 매우 편리합니다.
2. 복잡한 명령어 없이 쉽게 실행 가능
예를 들어, MySQL 컨테이너를 실행하려면 보통 다음과 같은 긴 명령어를 입력해야 합니다.
$ docker run -e MYSQL_ROOT_PASSWORD=password123 \
-p 3306:3306 \
-v /Users/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql \
-d mysql
반면, Docker Compose를 사용하면 위와 같은 설정을 compose.yml에 정리해두고, 단 한 줄이면 실행이 끝납니다.
$ docker compose up
자주 사용하는 Docker Compose 명령어
※ docker-compose 명령어는 v1이며 더 이상 업데이트되지 않으므로, v2 버전인 docker compose 형태로 사용하는 것을 권장합니다.
compose.yml 파일 작성 예시
services:
webserver:
container_name: webserver
image: nginx
ports:
- "80:80"
컨테이너 실행
$ docker compose up # 포그라운드 실행
$ docker compose up -d # 백그라운드 실행
- -d: 데몬(백그라운드) 모드 실행
로그 확인
$ docker compose logs # 전체 컨테이너 로그 확인
코드 변경 시 이미지 재빌드 후 실행
$ docker compose up --build # 포그라운드 실행
$ docker compose up --build -d # 백그라운드 실행
※ --build 옵션은 이미지가 있더라도 강제로 재빌드합니다.
이미지 다운로드 또는 업데이트
$ docker compose pull
컨테이너 종료 및 삭제
$ docker compose down
- 실행된 모든 컨테이너, 네트워크, 볼륨 등을 정리합니다.
'MLOps > Docker' 카테고리의 다른 글
[Docker#16] Docker Compose 여러 개의 컨테이너 동시에 띄우기(2) (0) | 2025.05.13 |
---|---|
[Docker#15] Docker Compose 여러 개의 컨테이너 동시에 띄우기(1) (0) | 2025.05.13 |
[Docker#13] Dockerfile WORKDIR (3) | 2025.05.12 |
[Docker#12] Dockerfile RUN (0) | 2025.05.12 |
[Docker#11] Dockerfile ENTRYPOINT (0) | 2025.05.12 |