멀티 스테이지 빌드(multi-stage builds), docker-compose 오케스트레이션, 이미지 최적화, 디버깅 및 운영 모범 사례를 포함하는 포괄적인 Docker 컨테이너화 워크플로우입니다. 애플리케이션 컨테이너화, 개발 환경 구축 또는 Docker 배포 시 사용합니다.
View on GitHubicartsh/icartsh_plugin
icartsh-plugin
January 20, 2026
Select agents to install to:
npx add-skill https://github.com/icartsh/icartsh_plugin/blob/main/icartsh-plugin/skills/docker-workflow/SKILL.md -a claude-code --skill docker-workflowInstallation paths:
.claude/skills/docker-workflow/# Docker Workflow ## Overview Docker 컨테이너화는 애플리케이션과 그 종속성을 이식 가능하고 재현 가능한 컨테이너로 패키징하여 개발, 테스트 및 배포를 능률화합니다. 이 SKILL은 개발부터 운영에 이르기까지 전문적인 Docker 워크플로우를 안내합니다. ## Core Capabilities - **멀티 스테이지 빌드 (Multi-stage builds)**: 최적의 이미지 크기를 위해 빌드와 런타임 종속성을 분리합니다. - **Docker Compose 오케스트레이션**: 네트워킹과 종속성을 갖춘 다중 컨테이너 애플리케이션을 관리합니다. - **이미지 최적화**: 모범 사례를 통해 이미지 크기를 50-90% 줄입니다. - **개발 워크플로우**: Hot-reload, 볼륨 마운트 및 환경별 설정을 지원합니다. - **디버깅 도구**: 컨테이너 조사, health checks 및 트러블슈팅 유틸리티를 제공합니다. - **운영 준비 (Production readiness)**: 보안 강화(Security hardening), health checks 및 배포 전략을 다룹니다. ## When to Use This Skill 다음을 수행할 때 활성화하세요: - 새로운 애플리케이션 컨테이너화 - Docker로 개발 환경 구축 - 운영 환경에 적합한 Docker 이미지 생성 - 다중 컨테이너 애플리케이션 오케스트레이션 - 컨테이너 이슈 디버깅 - Docker 빌드 및 이미지 최적화 ## Workflow Phases ### Phase 1: Initial Setup #### .dockerignore 생성 빌드 컨텍스트에서 불필요한 파일을 제외합니다: ```dockerignore node_modules/ __pycache__/ *.pyc .git/ .env *.log dist/ build/ coverage/ ``` 포괄적인 템플릿은 `examples/.dockerignore`를 참조하세요. **핵심 원칙**: - 빌드 아티팩트 및 종속성 제외 - 민감한 파일(.env, 자격 증명) 제외 - 버전 관리 시스템(.git) 제외 - 컨텍스트 크기 축소 = 빌드 속도 향상 #### 애플리케이션 요구 사항 분석 다음을 결정합니다: - 런타임 (Node.js, Python, Go, Java) - 종속성 및 패키지 매니저 - 빌드 요구 사항 vs 런타임 요구 사항 - 포트 노출 및 볼륨 필요성 ### Phase 2: Multi-Stage Dockerfile #### 전략 선택 멀티 스테이지 빌드는 최종 이미지 크기를 50-90% 줄여줍니다: ```dockerfile # Stage 1: Build FROM node:18-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY . . RUN npm run build # Stage 2: Production FROM node:18-alpine WORKDIR /app COPY --from=builder /app/dist ./dist COPY --from=builder /app/node_modules ./node_modules EXPOSE 3000 CMD ["node", "dist/index.js"] ``` Node.js, Python, Go, Java, Rust 템플릿은 `examples/Dockerfile.multi-stage`를 참조하세요. #### 레이어 캐싱 최적화 (Optimize Layer Caching) 순서가 중요합니다 - 자주 변경되는 콘텐츠는 마지막에 배치하세요: ```dockerfile # ✅ 좋음: 종속성이 별도로 캐시됨 COPY package.json package-lock.json ./ RUN npm ci COPY . . # ❌ 나쁨: 파일이 하나만 변경되어도 캐시가 무효화됨 COPY . . RUN npm ci ``` #### 보안 모범 사례 적용 ```dockerfile # 특정 버전 사용 FROM n