Docker Compose의 마법
포트, 볼륨, 네트워크 옵션까지 길게 늘어선 docker run 명령어를 컨테이너 개수만큼 타이핑하는 것은 매우 고통스럽습니다.
이 복잡한 설정들을 하나의 docker-compose.yml 파일에 코드로 정의(IaC)해두고, 명령어 단 한 줄로 전체 아키텍처를 올리거나 내릴 수 있도록 만들어주는 도구가 바로 Docker Compose입니다.
version: '3.8'
services:
database:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: min_db
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
api-server:
build: . # 현재 폴더의 Dockerfile을 빌드하여 실행
ports:
- "3000:3000"
environment:
DB_HOST: database # 매우 중요! localhost가 아닌 서비스 이름(database)을 적음
DB_USER: root
DB_PASS: secret
depends_on:
- database # database가 먼저 켜진 후에 api-server 실행
volumes:
db_data: # 네임드 볼륨 선언
# 해당 폴더에서 실행하면 명세서에 있는 2개의 컨테이너, 볼륨, 네트워크를 모두 알아서 생성하고 실행! (-d는 백그라운드)
docker-compose up -d
# 실행중인 컴포즈 프로젝트 목록 확인
docker-compose ps
# 모든 컨테이너와 네트워크를 한 번에 중지하고 깔끔하게 삭제! (-v 옵션을 주면 볼륨까지 삭제됨)
docker-compose down