← ClaudeAtlas

dockerfile-optimizerlisted

Dockerfile을 빌드 속도·이미지 크기·보안·배포 안정성 관점에서 분석하고 개선안을 제안하는 스킬. "Dockerfile 점검/최적화/리뷰", "이미지 크기 줄여줘", "빌드 느려", "도커 보안 점검", "root 사용 경고" 같은 요청에 발동. Node.js· Python·Go 프로젝트의 패키지 매니저를 lockfile로 감지하여 multi-stage· 레이어 캐시·non-root 사용자·.dockerignore 등을 자동 진단한다.
basejb/skills · ★ 5 · Data & Documents · score 59
Install: claude install-skill basejb/skills
# Dockerfile Optimizer Dockerfile을 분석하고 빌드 속도·이미지 크기·보안·배포 안정성 관점에서 개선안을 제안한다. 사용자가 명시 승인하기 전까지 어떤 파일도 만지지 않는다. ## When to Use 다음 발화에서 발동: **explicit (의도=optimize 기본):** - "Dockerfile 점검/리뷰/분석/최적화/봐줘" - "도커파일 검사" - "Dockerfile 개선" **resource (의도=optimize):** - "이미지 크기 줄여줘" - "도커 이미지 작게" - "빌드 느려" / "Docker 빌드 캐시 안 먹혀" **security (의도=security):** - "도커 보안 점검" - "root 사용 경고" - "컨테이너 보안 감사" - "이미지에 시크릿 있나" **review-only 의도 키워드:** - "리뷰만", "점검만", "분석만" → 적용 흐름 생략 CWD 또는 사용자가 지정한 경로에 `Dockerfile*`이 존재해야 한다. 없으면 "Dockerfile을 찾을 수 없습니다"로 종료. 자동 생성 금지. ## Workflow ### [1] 컨텍스트 수집 - Glob: `**/Dockerfile*`, `**/docker-compose*.y*ml`, `**/.dockerignore` - 의도 분류: `review` / `optimize` / `security` ### [2] 다중 파일 디스앰비귀에이션 Dockerfile이 2개 이상이면 AskUserQuestion으로 선택받는다 (전체 / 특정 1개 / 특정 다중). ### [3] 스택 감지 `Bash(scripts/detect-stack.sh <dockerfile-dir>)` 호출. 출력 JSON 파싱: ```json { "language": "node|python|go", "package_manager": "npm|pnpm|yarn|pip|poetry|uv|go", "has_native_deps": true|false, "framework_hint": "nestjs|nextjs|express|fastify|fastapi|django|flask|unknown" } ``` `has_native_deps=true`면 ImageSize 룰 DFO-SIZE-002 (alpine 추천)을 **비활성화**한다. ### [4] 룰 엔진 Dockerfile을 라인별로 읽고, 4개 룰 카테고리 references를 적용: - `references/rules-security.md` — DFO-SEC-001 ~ 008 (8개) - `references/rules-performance.md` — DFO-PERF-001 ~ 005 (5개) - `references/rules-image-size.md` — DFO-SIZE-001 ~ 005 (5개) - `references/rules-reliability.md` — DFO-REL-001 ~ 006 (6개) 각 룰의 Detection 섹션에 따라 매