Docker Compose 실전: Claude Code로 개발 환경 구축하기
Claude Code로 Docker Compose 설정과 멀티스테이지 Dockerfile을 작성해 재현 가능한 로컬 개발 환경을 만드는 실전 가이드입니다.
Docker Compose로 재현 가능한 개발 환경 구축하기
Docker Compose는 여러 컨테이너를 정의하고 관리하는 도구로, 개발 환경 구축을 크게 효율화해 줍니다. 서비스 구성 설계부터 Dockerfile 최적화까지 Claude Code가 인프라 구성을 원활하게 도와줍니다.
풀스택 개발 환경 구성
Claude Code에 프로젝트 전체 구성을 맡겨 봅시다.
> Next.js + PostgreSQL + Redis 개발 환경을
> Docker Compose로 구축해줘.
> 핫 리로드, 초기 데이터 투입, 헬스 체크까지 포함해서.
# docker-compose.yml
version: "3.9"
services:
app:
build:
context: .
dockerfile: Dockerfile.dev
ports:
- "3000:3000"
volumes:
- .:/app
- /app/node_modules
- /app/.next
environment:
- DATABASE_URL=postgresql://postgres:password@db:5432/myapp
- REDIS_URL=redis://redis:6379
- NODE_ENV=development
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
command: npm run dev
db:
image: postgres:16-alpine
ports:
- "5432:5432"
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: myapp
volumes:
- postgres_data:/var/lib/postgresql/data
- ./docker/init.sql:/docker-entrypoint-initdb.d/init.sql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 5
mailhog:
image: mailhog/mailhog
ports:
- "1025:1025"
- "8025:8025"
volumes:
postgres_data:
redis_data:
개발용 Dockerfile 최적화
핫 리로드에 대응한 개발용 Dockerfile입니다.
# Dockerfile.dev
FROM node:20-alpine
WORKDIR /app
# 패키지 파일만 먼저 복사해서 캐시 활용
COPY package.json package-lock.json ./
RUN npm ci
# 소스 코드는 볼륨 마운트로 공유
# COPY는 불필요 (docker-compose.yml에서 설정)
EXPOSE 3000
CMD ["npm", "run", "dev"]
프로덕션용 멀티스테이지 빌드
프로덕션 배포용 최적화 Dockerfile입니다.
# Dockerfile
# Stage 1: 의존성 설치
FROM node:20-alpine AS deps
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --production=false
# Stage 2: 빌드
FROM node:20-alpine AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build
# Stage 3: 프로덕션 이미지
FROM node:20-alpine AS runner
WORKDIR /app
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs
COPY --from=builder /app/public ./public
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
USER nextjs
EXPOSE 3000
ENV PORT 3000
CMD ["node", "server.js"]
환경별 설정 파일 분리
개발/테스트/프로덕션에서 설정을 분리하는 패턴입니다.
# docker-compose.override.yml (개발 환경용, 자동 로드)
services:
app:
volumes:
- .:/app
- /app/node_modules
environment:
- DEBUG=true
- LOG_LEVEL=debug
db:
ports:
- "5432:5432"
adminer:
image: adminer
ports:
- "8080:8080"
depends_on:
- db
# docker-compose.test.yml
services:
app:
build:
context: .
dockerfile: Dockerfile.dev
environment:
- DATABASE_URL=postgresql://postgres:password@db:5432/myapp_test
- NODE_ENV=test
command: npm run test:ci
depends_on:
db:
condition: service_healthy
db:
image: postgres:16-alpine
environment:
POSTGRES_DB: myapp_test
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
tmpfs:
- /var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 3s
timeout: 3s
retries: 10
Makefile로 명령어 단순화
자주 쓰는 명령어를 Makefile에 모아 둡니다.
.PHONY: up down build logs db-shell db-migrate db-seed test
up:
docker compose up -d
down:
docker compose down
build:
docker compose build --no-cache
logs:
docker compose logs -f app
db-shell:
docker compose exec db psql -U postgres -d myapp
db-migrate:
docker compose exec app npx prisma migrate dev
db-seed:
docker compose exec app npx prisma db seed
test:
docker compose -f docker-compose.yml -f docker-compose.test.yml run --rm app
clean:
docker compose down -v --remove-orphans
정리
Docker Compose를 쓰면 팀원 모두가 동일한 개발 환경을 손쉽게 재현할 수 있습니다. Claude Code를 활용하면 서비스 구성, Dockerfile 최적화, 환경 분리 같은 인프라 설정을 효율적으로 구축할 수 있죠.
컨테이너 기반 개발 환경의 추가 통합은 Dev Container 설정 가이드에서, CI/CD 파이프라인과의 연동은 CI/CD 셋업 가이드에서 다룹니다. Docker Compose 공식 문서도 함께 확인해 보세요.
Claude Code 워크플로우를 한 단계 업그레이드하세요
지금 바로 Claude Code에 복사해 쓸 수 있는 검증된 프롬프트 템플릿 50선.
이 글을 작성한 사람
Masa
Claude Code를 적극 활용하는 엔지니어. 10개 언어, 2,000페이지 이상의 테크 미디어 claudecode-lab.com을 운영 중.
관련 글
Claude Code로 리팩토링을 자동화하는 방법
Claude Code를 활용해 코드 리팩토링을 효율적으로 자동화하는 방법을 알아봅니다. 실전 프롬프트와 구체적인 리팩토링 패턴을 소개합니다.
Claude Code로 사이드 프로젝트 개발 속도를 극대화하는 방법 [예제 포함]
Claude Code를 활용해 개인 프로젝트 개발 속도를 획기적으로 높이는 방법을 알아봅니다. 실전 예제와 아이디어부터 배포까지의 워크플로를 포함합니다.
Complete CORS Configuration Guide: Claude Code 활용 가이드
complete cors configuration guide: Claude Code 활용. 실용적인 팁과 코드 예시를 포함합니다.