본문 바로가기
카테고리 없음

Docker Compose로 복잡한 개발환경 구성하는 방법

by 테크쓰기 2025. 6. 19.
반응형

개발 프로젝트가 커질수록 단순한 로컬 환경으로는 전체 시스템을 재현하기가 어렵습니다. 특히 백엔드, 프론트엔드, 데이터베이스, 캐시 서버 등 여러 서비스를 동시에 실행해야 하는 경우, 개발환경 구성은 더욱 복잡해지죠. 이런 문제를 해결해주는 도구가 바로 Docker Compose입니다. 이 글에서는 Docker Compose를 사용해 복잡한 개발환경을 효율적으로 구성하는 방법을 단계별로 소개합니다.

Docker Compose란 무엇인가?

Docker Compose는 여러 개의 컨테이너 서비스를 정의하고 동시에 실행할 수 있도록 돕는 도구입니다. 개발자가 모든 서비스를 수동으로 설정하고 실행하는 수고를 덜어주며, 하나의 설정 파일(docker-compose.yml)로 전체 환경을 관리할 수 있게 합니다.

주요 장점

  • 모든 서비스를 하나의 파일로 정의
  • 명령어 한 줄로 전체 서비스 시작/종료 가능
  • 컨테이너 간 네트워크 자동 구성
  • 환경 설정을 팀원 간 공유 가능

복잡한 환경 예시: 웹 애플리케이션 스택

다중 서비스 구성

예를 들어 다음과 같은 구성의 애플리케이션이 있다고 가정해 봅시다:

  • Node.js 백엔드 API 서버
  • React 기반 프론트엔드 애플리케이션
  • PostgreSQL 데이터베이스
  • Redis 캐시 서버
  • NGINX 리버스 프록시 서버

기본 Compose 예시

version: '3.9'
services:
  backend:
    build: ./backend
    ports:
      - "4000:4000"
    environment:
      - NODE_ENV=development
    depends_on:
      - db
      - redis

  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    depends_on:
      - backend

  db:
    image: postgres:13
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: appdb
    volumes:
      - pgdata:/var/lib/postgresql/data

  redis:
    image: redis:alpine

  nginx:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - frontend

volumes:
  pgdata:

실무 적용을 위한 고급 설정 팁

복잡한 환경에서 Compose를 더욱 효율적으로 활용하려면 몇 가지 고급 기능을 함께 사용하는 것이 좋습니다.

1. .env 파일 사용

환경 변수는 코드와 분리해 관리하는 것이 좋습니다. .env 파일에 데이터베이스 비밀번호, 포트 정보 등을 저장하고 Compose 파일에서 불러올 수 있습니다.

2. 헬스 체크 설정

서비스 간 의존성이 있는 경우, depends_on 외에도 헬스 체크 기능을 사용하면 더 안정적인 시작 순서를 보장할 수 있습니다.

3. 데이터 유지 관리

데이터베이스나 Redis 등의 서비스는 Docker 볼륨을 통해 데이터를 보존할 수 있도록 설정해야 합니다. 이를 통해 컨테이너 재시작 시에도 데이터가 유지됩니다.

4. 개발/운영 환경 분리

docker-compose.override.yml 파일을 사용하면 개발과 운영 환경에 따라 구성 파일을 분리해 관리할 수 있습니다.

디버깅 및 컨테이너 관리 팁

유용한 명령어

  • docker-compose logs -f [서비스명]: 실시간 로그 확인
  • docker-compose ps: 현재 실행 중인 컨테이너 상태 확인
  • docker exec -it [컨테이너명] bash: 컨테이너 내부 진입
  • docker-compose down -v: 컨테이너 및 볼륨 전체 정리

이 외에도 --build, --remove-orphans 등의 옵션을 활용하면 보다 유연하게 환경을 제어할 수 있습니다.

마무리: Compose로 환경 구성 자동화하기

Docker Compose는 복잡한 개발환경을 간단하고 일관되게 설정할 수 있는 강력한 도구입니다. 명령어 한 줄로 전체 스택을 시작하거나 종료할 수 있어, 초기 설정은 물론 유지 관리에도 큰 도움이 됩니다.

처음에는 조금 복잡하게 느껴질 수 있지만, 익숙해지면 개발 속도와 품질 모두에서 큰 향상을 경험할 수 있습니다. 여러분의 프로젝트에도 적용해 보세요. 로컬 환경에서의 생산성을 극대화하는 데 큰 도움이 될 것입니다.

반응형