Docker 실무 가이드 · Part 4

Compose로 여러 서비스를 함께 띄우기

로컬 개발 환경을 명령 하나로 재현하기 위한 Docker Compose 실무 흐름

작성 기준2026년 7월

이 파트에서 다루는 내용

Compose가 필요한 이유services/ports/volumesDB 데이터 보존로컬 개발 운영
01

실무 로컬 개발은 앱 하나보다 조합이 많습니다

웹 앱 하나를 실행하려고 해도 DB, Redis, 검색엔진, 메시지 큐 같은 주변 서비스가 필요할 수 있습니다.

Docker Compose는 여러 docker run 명령을 하나의 compose.yml로 묶어 팀원이 같은 조합을 띄우게 해줍니다.

app
애플리케이션

직접 개발하는 웹 서버나 API 서버입니다.

db
데이터베이스

PostgreSQL, MySQL 같은 로컬 개발용 데이터 저장소입니다.

cache
캐시/큐

Redis, RabbitMQ처럼 앱이 의존하는 주변 서비스입니다.

02

compose.yml은 실행 매뉴얼입니다

Compose 파일에는 서비스 이름, 이미지 또는 빌드 위치, 포트, 환경변수, 볼륨, 의존 관계를 적습니다.

문서에 긴 설치 절차를 적는 대신 compose.yml과 README 실행 명령을 맞춰두면 온보딩 비용이 줄어듭니다.

services

같이 띄울 컨테이너 목록입니다. app, db, redis처럼 이름을 붙입니다.

ports

호스트와 컨테이너 포트를 연결합니다. 충돌이 나면 호스트 쪽 포트를 바꿉니다.

volumes

DB 데이터나 개발 소스처럼 컨테이너 삭제 후에도 남길 데이터를 연결합니다.

depends_on

서비스 시작 순서를 표현합니다. 실제 준비 완료 여부는 healthcheck까지 함께 봐야 합니다.

docker compose up -d현재 compose.yml 기준으로 백그라운드 실행
docker compose psCompose 서비스 상태 확인
docker compose logs -f appapp 서비스 로그 실시간 확인
docker compose exec app shapp 서비스 컨테이너 안으로 접속
docker compose downCompose로 띄운 컨테이너와 네트워크 종료
03

볼륨과 네트워크를 모르면 데이터가 사라집니다

  • 컨테이너 안에만 저장한 데이터는 컨테이너 삭제 시 사라질 수 있습니다.
  • DB 데이터는 named volume으로 보존하는 구성이 일반적입니다.
  • Compose 서비스끼리는 서비스 이름을 호스트명처럼 사용해 통신합니다.
  • docker compose down -v는 볼륨까지 지우므로 로컬 DB 데이터가 필요한지 먼저 확인해야 합니다.
데이터 주의

개발 DB라도 스키마 샘플, 테스트 계정, 수동 입력 데이터가 들어 있다면 down -v 실행 전에 백업 필요 여부를 확인하세요.

04

프로젝트 팀원은 compose.yml을 실행 계약으로 읽습니다

팀원 입장에서 Docker Compose는 로컬 PC에 무엇을 설치해야 하는지 외우지 않게 해주는 실행 계약입니다. README의 실행 명령, compose.yml의 서비스 이름, .env 예시 파일이 서로 맞아야 합니다.

처음 투입된 팀원은 무작정 up부터 실행하기보다 config로 해석 결과를 확인하고, pull 또는 build 후 ps와 logs로 정상 기동 여부를 봅니다. 문제가 나면 컨테이너 안에 들어가기 전에 로그와 포트 매핑부터 확인합니다.

처음 실행

README, .env.example, compose.yml을 순서대로 보고 필요한 환경변수와 포트 충돌 여부를 확인합니다.

작업 중 확인

서비스 이름을 기준으로 logs, exec, restart를 사용합니다. 컨테이너 ID보다 app, db 같은 서비스 이름을 쓰는 편이 재현성이 좋습니다.

종료와 정리

일반 종료는 down을 쓰고, down -v는 DB 볼륨까지 지운다는 점을 확인한 뒤 사용합니다.

docker compose config환경변수 치환까지 반영된 최종 Compose 설정 확인
docker compose up --build -d필요한 이미지를 빌드하고 백그라운드 실행
docker compose ps서비스 상태와 호스트 포트 확인
docker compose logs --tail 100 -f app앱 서비스 최근 로그부터 실시간 확인
docker compose exec app sh필요할 때 앱 컨테이너 안에서 파일과 환경 확인
docker compose down컨테이너와 네트워크 종료. 볼륨은 보존
사용자 기준

팀원은 Compose 파일을 수정하기 전에 현재 문제의 원인이 포트, 환경변수, 이미지 빌드, 볼륨 중 어디인지 좁혀 보고 팀 표준 설정을 임의로 바꾸지 않아야 합니다.

체크

이 파트 완료 기준