본문으로 건너뛰기

"devops" 태그로 연결된 1개 게시물개의 게시물이 있습니다.

모든 태그 보기

Docker Compose로 개발환경 구축하기

· 약 2분
dev-burnern
Developer

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:

수학적 개념

컨테이너 리소스 할당을 계산할 때 다음 공식을 사용할 수 있습니다:

Total Memory=i=1nMi×Ri\text{Total Memory} = \sum_{i=1}^{n} M_i \times R_i

여기서 MiM_i는 각 컨테이너의 메모리, RiR_i는 레플리카 수입니다.

아키텍처 다이어그램

환경별 구성

주의사항

프로덕션 환경에서는 반드시 별도의 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를 활용하면:

  1. 일관된 개발 환경 구축
  2. 빠른 온보딩
  3. 쉬운 테스트 환경 구성

이 모든 것이 가능해집니다.

다음 단계

다음 글에서는 Kubernetes로의 마이그레이션을 다룰 예정입니다.