MLOps/Docker

[Docker#14] Docker Compose란?

j.d 2025. 5. 12. 23:51

복잡한 애플리케이션을 개발하거나 운영하다 보면, 하나의 컨테이너만으로는 충분하지 않을 때가 많습니다. 예를 들어, 웹 서버와 데이터베이스 서버를 함께 운영하거나, 여러 개의 마이크로서비스를 동시에 실행해야 할 때가 대표적인 사례입니다.

 

이때 유용하게 활용되는 도구가 바로 Docker Compose입니다.

 

 

 

Docker Compose란?

Docker Compose여러 개의 Docker 컨테이너를 하나의 서비스 묶음으로 정의하고 관리할 수 있게 도와주는 도구입니다.

 

즉, 복잡한 컨테이너 환경을 하나의 compose.yml 파일로 정의해두면, 한 줄 명령어로 전체 서비스를 실행하거나 중지할 수 있습니다.

출처: https://velog.io/@whattsup_kim/Docker-Compose-Compose-Specification

 

왜 사용할까?

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
  • 실행된 모든 컨테이너, 네트워크, 볼륨 등을 정리합니다.