D: 개발자라면 누구나 겪는 고민!
“로컬 개발 환경 설정하는 데 시간을 너무 많이 잡아먹는데…”
“새 팀원이 온보딩할 때마다 환경 설정으로 3일을 소모하는 게 말이 돼?”
이럴 때 Docker Compose가 답입니다!
5분 만에 완벽한 개발 환경을 구축하는 방법을 알려드릴게요. ✨
1. 왜 Docker Compose인가? 🤔
- 일관된 환경: 모든 팀원이 동일한 환경에서 개발 가능
- 의존성 문제 해결: “내 로컬에선 되는데…” 문제 종결
- 초고속 설정:
docker-compose up
한 방이면 모든 서비스 실행 - 커스터마이징 용이: 필요 시 쉽게 서비스 추가/제거 가능
💡 실제 사례:
저희 팀은 새 개발자가 온보딩할 때
“Git 클론하고 docker-compose up만 하세요”
라고 말한 뒤 5분 만에 개발 시작했습니다!
2. 설치가 필요해요! (1분 ⏰)
# Docker 설치 (이미 있으면 생략)
<blockquote class="wp-embedded-content" data-secret="zu8j1IBzRR"><a href="https://www.docker.com/get-started/">Get Started</a></blockquote>
<iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; visibility: hidden;" title="“Get Started” — Docker" src="https://www.docker.com/get-started/embed/#?secret=8Y5xuF564Z#?secret=zu8j1IBzRR" data-secret="zu8j1IBzRR" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
# 설치 확인
docker --version
docker-compose --version
3. 기본 예제: 웹 서비스 + DB (3분 ⏳)
docker-compose.yml
파일을 생성하세요:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: postgres:13
environment:
POSTGRES_PASSWORD: mysecretpassword
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
실행은 간단합니다:
docker-compose up -d
이제:
- 웹 서버: http://localhost:8080
- PostgreSQL DB: 5432 포트로 연결 가능
4. 고급 활용법 🚀
A. 개발 환경 특화 설정
services:
app:
build: .
volumes:
- .:/app # 로컬 변경사항 즉시 반영
ports:
- "3000:3000"
depends_on:
- redis
environment:
NODE_ENV: development
redis:
image: redis:alpine
B. 멀티 컨테이너 구성 예제 (Node.js + React + MySQL)
version: '3.8'
services:
frontend:
build: ./frontend
ports:
- "3000:3000"
volumes:
- ./frontend:/app
- /app/node_modules
backend:
build: ./backend
ports:
- "5000:5000"
environment:
DB_HOST: database
depends_on:
- database
database:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: rootpass
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
5. 생산성을 높이는 팁 💡
-
자주 쓰는 명령어 알리아스:
alias dc='docker-compose' alias dcup='dc up -d' alias dcdown='dc down'
-
로깅 보기:
docker-compose logs -f service_name
-
의존성 관리:
depends_on: - db - cache
-
환경 변수 사용:
# .env 파일 DB_PASSWORD=secret
environment:
DB_PASSWORD: ${DB_PASSWORD}
6. 문제 해결 🔧
Q1. 포트 충돌이 발생해요!
ports:
- "3000:3000" # 호스트:컨테이너 포트
-> 호스트 포트를 변경해보세요 (ex: “3001:3000”)
Q2. 컨테이너가 시작되지 않아요
docker-compose logs service_name # 로그 확인
docker-compose up --build # 재빌드 후 실행
Q3. 디스크 공간이 부족해요
docker system prune # 사용하지 않는 리소스 정리
7. 실제 적용 사례 🏢
스타트업 A사의 경우:
- 기존 온보딩: 2일 소요
- Docker Compose 적용 후: 30분으로 단축
- 개발 환경 차이로 인한 버그: 80% 감소
개발자 B씨의 후기:
“이제 제 맥북에 뭐가 설치되어있는지 몰라도 됩니다.
docker-compose.yml만 있으면 모든 게 해결되네요!”
이제 여러분도 docker-compose up
한 방으로
개발 환경을 마법처럼 띄워보세요! 🎩✨
더 궁금한 점이 있다면 댓글로 물어보세요~
(다음 포스팅에서는 Kubernetes와 연동하는 방법을 알려드릴게요!)