Docker Compose로 개발환경 구축하기
· 약 2분
Docker Compose는 여러 컨테이너를 정의하고 실행할 수 있는 도구입니다. 이 글에서는 실제 프로젝트에서 Docker Compose를 활용하는 방법을 알아보겠습니다.
왜 Docker Compose인가?
개발 환경을 구축할 때 흔히 겪는 문제들이 있습니다:
- 팀원마다 다른 환경 설정
- "내 컴퓨터에서는 되는데..." 문제
- 복잡한 의존성 관리
핵심 포인트
Docker Compose를 사용하면 docker-compose up 한 줄로 전체 개발환경을 실행할 수 있습니다.
기본 구성
다음은 웹 애플리케이션을 위한 기본 docker-compose.yml 예시입니다:
version: '3.8'
services:
web:
build: .
ports:
- '3000:3000'
volumes:
- .:/app
- /app/node_modules
environment:
- NODE_ENV=development
depends_on:
- db
- redis
db:
image: postgres:15
environment:
POSTGRES_USER: dev
POSTGRES_PASSWORD: dev123
POSTGRES_DB: myapp
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- '5432:5432'
redis:
image: redis:7-alpine
ports:
- '6379:6379'
volumes:
postgres_data:
수학적 개념
컨테이너 리소스 할당을 계산할 때 다음 공식을 사용할 수 있습니다:
여기서 는 각 컨테이너의 메모리, 는 레플리카 수입니다.
아키텍처 다이어그램
환경별 구성
주의사항
프로덕션 환경에서는 반드시 별도의 docker-compose.prod.yml을 사용하세요.
시크릿과 민감한 정보는 환경변수로 관리해야 합니다.
개발 환경
개발 환경에서는 hot-reload와 디버깅을 위한 설정이 필요합니다:
services:
web:
build:
context: .
target: development
volumes:
- .:/app:delegated
command: npm run dev
프로덕션 환경
프로덕션에서는 최적화된 이미지를 사용합니다:
services:
web:
build:
context: .
target: production
restart: always
deploy:
replicas: 3
관련 문서
더 자세한 내용은 React 상태관리 문서를 참고하세요.
마무리
Docker Compose를 활용하면:
- 일관된 개발 환경 구축
- 빠른 온보딩
- 쉬운 테스트 환경 구성
이 모든 것이 가능해집니다.
다음 단계
다음 글에서는 Kubernetes로의 마이그레이션을 다룰 예정입니다.
