도커 컴포즈는 여러 컨테이너를 가지는 애플리케이션을 통합적으로 Docker 이미지를 만들고, 만들어진 각각의 컨테이너를 시작 및 중지하는 등의 작업을 더 쉽게 수행할 수 있도록 도와주는 도구이다.
도커 컴포즈를 사용하면 여러 컨테이너로 구성된 애플리케이션을 하나의 단위로 다룰 수 있다. 예를 들어 웹 서비스를 개발할 때 웹서버, DB, 캐시 서버 등을 각각 독립적인 컨테이너로 실행하고 이들을 연결하여 서비스를 구성할 수 있다. 도커 컴포즈를 사용하면 이러한 컨테이너들의 구성과 실행 방법을 정의하고 한번에 관리할 수 있다.
하지만 도커 컴포즈는 여러 호스트 머신에 흩어져있는 컨테이너들을 제어하는데는 적합하지 않다. 이러한 관리를 위해서는 쿠버네티스와 같은 컨테이너 오케스트레이션 툴이 필요하다.
도커 컴포즈에서 가장 중요한 요소는 Services이다. 이는 도커의 컨테이너와 비슷하게 각 서비스마다 환경변수, 볼륨, 네트워크, 포트 포워딩과 같은 부분을 작성할 수 있다.
각 서비스들은 서비스 이름을 통해 컨테이너 내에서 다른 서비스에 접근할 수 있다.
version: '3'
services:
frontend:
build:
context: .
dockerfile: Dockerfile-frontend
ports:
- 3000:3000
backend:
build:
context: .
dockerfile: Dockerfile-backend
ports:
- 8000:8000
cpus: ".25"
mem_limit: "2g"
database:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=secret
- MYSQL_DATABASE=mydb
docker-compose up