한 YAML 파일로 멀티 컨테이너 앱
compose.yaml 은, 아니면 docker-compose.yaml 도 되고, stack 하나를 통째로 그려. 여러 컨테이너와 네트워크, 볼륨, 그리고 서로 간의 의존까지. docker compose up 한 줄이면 stack 전체가 살아나. YAML 문법은 Kubernetes 와 똑같지만 뜻하는 바는 완전히 달라. 여긴 호스트 한 대짜리고, 조율해 주는 층도 없어.
건드릴 세 최상위 섹션
services— 컨테이너들이야. 각각 이름을 갖고image나build,ports,environment,volumes,depends_on을 달아.volumes— 이름 붙은 영구 디스크 (Postgres 데이터, ML 모델 캐시 같은 것).networks— 보통은 기본 하나로 충분해. stack 을 서로 이어야 할 때만 더 선언하고.
depends_on 미묘함
기본 depends_on 은 '이 순서로 띄워라' 일 뿐이야. '준비될 때까지 기다려라' 가 아니고. 진짜로 기다리게 하려면 condition: service_healthy 를 쓰고, 기다릴 대상 service 에 healthcheck 를 정의해줘야 해. 그냥 쓴 형태는 발등 찍기 딱 좋아. Postgres 가 연결을 받기도 전에 앱이 먼저 뜨거든.
version: "3.8" 줄은 죽었어. Compose Spec v2 (2020 년 이후) 부터
version: 필드는 무시돼. 새 파일에는 아예 쓰지 마. version: "3.8" 이 달린 옛 파일도 잘 돌아가지만 그 줄은 장식일 뿐이야. 옛날 튜토리얼에서 의미 있는 것처럼 베껴오지 마.