← 아티클 목록

Docker Compose YAML 구조 한눈에 보기

2028-08-07#docker#compose#yaml

컨테이너 하나는 docker run으로 충분하지만, 웹·DB·캐시처럼 여러 개를 함께 띄우면 명령이 길고 외우기 어려워집니다. Docker Compose는 이 여러 컨테이너의 설정을 compose.yaml 한 파일에 적어 두고 docker compose up 한 번으로 전부 띄우는 도구입니다. 구조를 알면 남이 쓴 compose 파일도 바로 읽힙니다.

최상위 세 블록

compose 파일의 뼈대는 세 개의 최상위 키입니다.

역할
services띄울 컨테이너들의 정의 (가장 핵심)
networks서비스들이 붙을 네트워크
volumes데이터를 영속 저장할 볼륨

대부분의 내용은 services 아래에 들어갑니다. 각 서비스는 이미지, 포트, 환경변수, 의존 관계 같은 설정을 자식 키로 갖습니다.

services 블록 읽기

다음은 웹 앱과 PostgreSQL을 함께 띄우는 전형적인 예시입니다.

YAML
services:
  web:
    build: .
    ports:
      - "8080:3000"
    environment:
      DATABASE_URL: postgres://db:5432/app
    depends_on:
      - db
  db:
    image: postgres:16
    volumes:
      - dbdata:/var/lib/postgresql/data

volumes:
  dbdata:

ports"8080:3000"은 호스트 8080을 컨테이너 3000으로 연결합니다. depends_ondbweb보다 먼저 시작하라는 순서 지정입니다. webdb라는 이름으로 접속할 수 있는 것은, compose가 서비스 이름을 DNS로 풀어 주기 때문입니다.

자주 쓰는 키 정리

의미
image / build기존 이미지 사용 / Dockerfile로 빌드
ports"호스트:컨테이너" 포트 매핑
environment컨테이너 환경변수
depends_on시작 순서 의존성
volumes데이터 영속화 마운트
Docker
docker compose up -d
docker compose ps
docker compose logs -f web
docker compose down

up -d로 백그라운드 실행, logs -f로 로그 추적, down으로 전체 정리까지 한 묶음으로 다룹니다.

요점 정리

  • compose 파일은 services·networks·volumes 세 최상위 블록으로 이루어진다.
  • 대부분의 설정은 services 아래에 이미지·포트·환경변수로 들어간다.
  • depends_on은 시작 순서를, 서비스 이름은 컨테이너 간 DNS 주소를 제공한다.
  • docker compose updown으로 여러 컨테이너를 한 번에 다룬다.

compose 파일을 직접 작성해 여러 컨테이너를 한 번에 띄우는 실습은 도커 트랙에서 할 수 있습니다 — 회원가입 없이 무료로.