월. 8월 18th, 2025

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="&#8220;Get Started&#8221; &#8212; 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

이제:

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. 생산성을 높이는 팁 💡

  1. 자주 쓰는 명령어 알리아스:

    alias dc='docker-compose'
    alias dcup='dc up -d'
    alias dcdown='dc down'
  2. 로깅 보기:

    docker-compose logs -f service_name
  3. 의존성 관리:

    depends_on:
    - db
    - cache
  4. 환경 변수 사용:

    # .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와 연동하는 방법을 알려드릴게요!)

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다