처음 웹 앱 만들었을 때, 솔직히 서버 하나만 잘 돌면 되는 줄 알았어요. 그런데 조금만 기능이 늘어나면 어때요? frontend도 있어야 하고, backend도 따로 돌아가야 하고, database도 빠질 수 없죠. 이거 하나하나 컨테이너 따로 띄우고 연결하고 있다 보면 진짜 정신없습니다. 예전에 저도 그렇게 고생 좀 했는데, 그때 알게 된 게 바로 Docker Compose예요. 이건 진짜 신세계였어요. 모든 컨테이너를 한 줄 명령어로 띄우고, 서로 잘 연결되게 만들어주는 도우미 같은 존재예요.
프로젝트 구성? 별 거 없어요
- 예제로 사용하는 프로젝트는 backend와 frontend 두 가지로 구성됨
- 각 폴더에는 Dockerfile이 존재하며 Compose에서 필수적으로 사용됨
- Dockerfile은 Compose에서 반드시 필요하며 대체가 아닌 기반으로 작동함
지금 예제로 쓰는 프로젝트는 예전 강의에서 만든 거예요. backend 하나, frontend 하나 딱 두 개인데, 각자 폴더에 Dockerfile 잘 챙겨놨어요. 이게 핵심이에요. Compose는 이 Dockerfile들을 기반으로 돌아갑니다. ‘이거 빼고도 되지 않을까?’ 싶어도 꼭 필요해요. Compose는 그걸 대체하는 게 아니라, 활용하는 거니까요.
왜 굳이 Compose냐고요?
- 구성 요소가 여러 개일 때 수작업으로 컨테이너 관리하는 것은 매우 번거로움
- Compose는 설정 한 번만 하면 한 줄 명령어로 여러 서비스 실행 가능
- 모든 컨테이너가 유기적으로 연결되어 손쉽게 실행 가능함
제일 솔직한 답: 귀찮아서요. 구성 요소가 3~4개 넘어가면 진짜 번거롭잖아요. 근데 Compose 쓰면, 그냥 설정 하나 해두고 docker-compose up 치면 끝이에요. frontend, backend, DB가 한 덩어리처럼 딱 올라가요. 마치 밴드 리더가 박자 맞춰주는 느낌? 알아서 척척 돌아갑니다.
시작은 docker-compose.yml 파일 만들기부터
- 프로젝트 루트에 docker-compose.yml 파일 생성 필요
- .yaml 또는 .yml 확장자 사용 가능, YAML 문법 준수 필요
- 들여쓰기 오류는 실행 에러로 이어지므로 주의해야 함
- VS Code의 Docker 확장을 설치하면 작성 편의성과 오류 방지에 도움 됨
루트 폴더에 docker-compose.yml 파일 하나 만드세요. .yaml이나 .yml 중 아무거나 써도 상관 없고요. 이 파일은 YAML 문법을 따르는데, 들여쓰기가 생명이에요. 한 번 틀리면 에러 나니까 조심조심.
그리고 개인적으로 추천하는 건 Visual Studio Code에서 Docker 확장 설치해두는 거예요. 자동완성 덕분에 실수도 줄고, 뭐가 뭔지 훨씬 보기 쉬워요.
version? 그냥 3.8 쓰면 무난해요
- Compose 파일은 시작 부분에 version을 지정해야 함
- 앱 버전이 아닌 Compose 문법 버전으로 기능 사용 여부에 영향 줌
- 예시는 3.8 버전 기준이며, 공식 문서를 통해 최신 버전 확인 가능
- 실무에서는 전체 기능 중 필요한 일부만 사용해도 충분함
파일 제일 처음엔 version부터 써야 해요. 앱 버전이 아니라 Compose에서 어떤 문법을 쓸 건지 알려주는 거예요. 저는 그냥 3.8로 씁니다:
version: '3.8'
버전에 따라 지원되는 기능이 조금씩 다르니까요. 혹시 궁금하면 공식 문서 들어가서 확인해보세요. 근데 솔직히 말해서 대부분 기능은 안 써요. 진짜 필요한 것만 익혀도 충분합니다.

services – 내 컨테이너들 이름 짓기
- services 항목 아래 컨테이너들을 나열해 설정 시작
- 컨테이너 이름은 자유롭게 지정하되 명확하게 작성 필요
- 들여쓰기는 두 칸 단위로 유지해야 YAML 문법 오류 방지
이제부터 진짜 설정 들어갑니다. services라는 항목에 여러분이 띄울 컨테이너들을 정리하면 돼요. 예를 들면:
services:
mongodb:
backend:
frontend:
이름은 본인이 알아보기 쉽게만 정하면 됩니다. 저처럼 backend, frontend, mongodb 이렇게 쓰면 나중에 헷갈릴 일도 없고요. 그리고 들여쓰기는 두 칸, 꼭 지켜주세요. 이거 틀리면 또 에러 납니다.
각 컨테이너에 디테일 추가하기
- 각 컨테이너별 설정을 services 아래에 추가로 작성
- 예시에서는 image 사용, build 경로 지정, 포트 연결 등을 설정함
- 총 네 칸 들여쓰기로 구조를 구분하며 설정 구성 필요
각 컨테이너에 필요한 설정을 조금 더 써줘야 해요. 여기서는 들여쓰기를 두 칸 더 해줘서 총 네 칸 맞춰야 하고요. 기본 예시는 이렇게:
services:
mongodb:
image: mongo:latest
ports:
- "27017:27017"
backend:
build: ./backend
ports:
- "5000:5000"
frontend:
build: ./frontend
ports:
- "3000:3000"
이렇게 해두면 Docker가 “오케이, Mongo는 이 이미지 쓰고 이 포트 열어야지~” 하고 알아서 해줍니다. 정말 편하죠.

명령어 한 줄이면 끝나는 마법
- docker-compose up 명령어 한 줄로 모든 컨테이너 실행 가능
- 과거처럼 각각의 컨테이너를 따로 실행하고 연결할 필요 없음
- 실행 과정이 간편해지고 시간도 크게 절약됨
이제 설정 다 됐으면, 터미널 열고 다음처럼 입력하세요:
docker-compose up
진짜 이거 하나면 다 뜹니다. 예전엔 각각 따로 띄우고, 연결 확인하고... 머리 아팠는데, 이제는 그런 거 필요 없어요. 커피 한 잔 마시는 사이에 앱이 다 올라가요.
Compose, 알고 보면 진짜 다재다능
기본적인 것 외에도, Compose가 해줄 수 있는 게 꽤 많아요:
- 환경변수 설정해서 보안도 챙기고
- volume으로 데이터 유지도 가능하고
- custom network 구성해서 컨테이너끼리 잘 소통하게 만들 수 있고
- depends_on으로 실행 순서 조절도 가능해요
그리고 이 설정 파일은 팀원이랑 공유하면 끝이에요. 다 같이 같은 환경에서 개발하면 충돌도 줄고, 협업도 훨씬 부드러워집니다.

한 마디로 정리하자면
- 여러 컨테이너를 다루는 복잡한 환경을 단순하게 정리 가능
- 개발 환경을 자동화하고 관리 스트레스를 크게 줄여줌
- 실무나 개인 프로젝트에서 반복해서 쓰기 좋은 도구
Docker Compose는, 여러 컨테이너가 얽힌 복잡한 앱을 단순하게 만들어줘요. 개발 환경 세팅하면서 머리 싸매고 싶지 않다면, Compose는 필수템이에요. 저도 한 번 써보고는 아예 안 쓰는 날이 없어요.
요약해볼게요
- docker-compose.yml 만들기
- version은 ‘3.8’로 시작
- services에 컨테이너 이름과 역할 정리
- 들여쓰기 정확히 (두 칸씩!)
- 각 컨테이너 설정 추가 (image, build, ports 등)
- 명령어 한 줄 docker-compose up으로 실행!
도구 하나 바꿨을 뿐인데, 개발 환경이 이렇게 편해질 줄은 몰랐어요. 진심 추천합니다.
'SW > Kubernetes, Docker' 카테고리의 다른 글
| Docker Compose로 MongoDB 환경 구성하는 방법 (완전 초보도 가능한 실전 예제) (0) | 2025.09.18 |
|---|---|
| Docker 로드맵 2025: 초보자부터 실무까지 한 번에 끝내는 가이드 (1) | 2025.09.17 |
| 여러 Docker 컨테이너를 한 번에 실행하는 가장 쉬운 방법 (Docker Compose 꿀팁) (0) | 2025.09.16 |
| Docker + React 실시간 반영 환경 설정법 (윈도우 WSL2 완벽 대응) (0) | 2025.09.15 |
| Docker로 Node.js 개발환경 구축하기: 실시간 반영, 로그 보존, 환경변수까지 완벽정리 (0) | 2025.09.14 |