Claude-skill-registry docker-wizard
Generate optimized Dockerfiles and docker-compose.yml with best practices and multi-stage builds
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/docker-wizard" ~/.claude/skills/majiayu000-claude-skill-registry-docker-wizard && rm -rf "$T"
manifest:
skills/data/docker-wizard/SKILL.mdsource content
Docker Wizard
Generate production-ready Dockerfiles and docker-compose.yml files by analyzing your project. Follows best practices, optimizes image size, and includes security hardening.
What This Skill Does
- Auto-detects project type and dependencies
- Generates multi-stage builds for smaller images
- Applies security best practices (non-root user, minimal base images)
- Creates docker-compose.yml for multi-service setups
- Includes development and production configurations
- Optimizes layer caching for faster builds
Instructions
Phase 1: Project Analysis
-
Detect project type:
Use Glob to find: - package.json → Node.js - requirements.txt/pyproject.toml → Python - go.mod → Go - Cargo.toml → Rust - pom.xml/build.gradle → Java -
Analyze dependencies:
Use Read to examine: - Runtime dependencies - Build dependencies - Environment requirements - Port requirements
Phase 2: Dockerfile Generation
Generate optimized multi-stage Dockerfile:
# Example for Node.js # Stage 1: Dependencies FROM node:20-alpine AS deps WORKDIR /app COPY package*.json ./ RUN npm ci --only=production # Stage 2: Build FROM node:20-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # Stage 3: Production FROM node:20-alpine AS runner WORKDIR /app # Security: Run as non-root user RUN addgroup --system --gid 1001 nodejs RUN adduser --system --uid 1001 nextjs COPY --from=deps --chown=nextjs:nodejs /app/node_modules ./node_modules COPY --from=builder --chown=nextjs:nodejs /app/dist ./dist USER nextjs EXPOSE 3000 CMD ["node", "dist/index.js"]
Best practices applied:
- Multi-stage builds (reduce image size by 70%)
- Alpine base images (minimal attack surface)
- Non-root user (security)
- Optimized layer caching
- .dockerignore generation
Phase 3: Docker Compose Generation
Create docker-compose.yml for multi-service setups:
version: '3.9' services: app: build: context: . dockerfile: Dockerfile ports: - "3000:3000" environment: - NODE_ENV=production - DATABASE_URL=postgresql://user:pass@db:5432/myapp depends_on: db: condition: service_healthy restart: unless-stopped db: image: postgres:16-alpine environment: - POSTGRES_USER=user - POSTGRES_PASSWORD=pass - POSTGRES_DB=myapp volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U user"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped redis: image: redis:7-alpine ports: - "6379:6379" restart: unless-stopped volumes: postgres_data:
Phase 4: Additional Files
-
.dockerignore:
node_modules npm-debug.log .git .env *.md .vscode .idea coverage .DS_Store -
docker-compose.dev.yml (development overrides):
version: '3.9' services: app: build: target: builder volumes: - .:/app - /app/node_modules environment: - NODE_ENV=development command: npm run dev
Language-Specific Optimizations
Node.js
# Use npm ci for faster, reproducible builds RUN npm ci --only=production # Leverage layer caching COPY package*.json ./ RUN npm ci COPY . .
Python
# Use pip with cache mount RUN --mount=type=cache,target=/root/.cache/pip \ pip install -r requirements.txt # Use multi-stage for smaller images FROM python:3.11-slim COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
Go
# Multi-stage with scratch base FROM golang:1.21-alpine AS builder RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app . FROM scratch COPY --from=builder /app/app /app CMD ["/app"]
Security Best Practices
- Non-root user: Always run as non-root
- Minimal base: Use Alpine or distroless
- No secrets: Never COPY .env files
- Health checks: Include HEALTHCHECK directive
- Read-only rootfs: Add security-opt in compose
Tool Requirements
- Read: Examine project files
- Write: Create Dockerfiles and compose files
- Glob: Find project structure
- Grep: Search for patterns
- Bash: Test docker build (optional)
Examples
Example 1: Full Stack App
User: "Generate Docker setup for my MERN app"
Generated:
- Multi-stage Dockerfile for React frontend
- Dockerfile for Node.js backend
- docker-compose.yml with MongoDB, Redis
- Nginx reverse proxy config
- .dockerignore for both services
Example 2: Microservices
User: "Create Docker Compose for microservices"
Generated:
- Service-specific Dockerfiles
- Shared docker-compose with networking
- Environment-specific overrides
- Health checks and dependencies
Best Practices
- Use specific versions, not
tagslatest - Implement health checks for all services
- Use bind mounts in development, volumes in production
- Set resource limits (memory, CPU)
- Enable logging drivers
Related Skills
- k8s-generator - Generate Kubernetes manifests
- cicd-pipeline-builder - Build CI/CD pipelines
Changelog
Version 1.0.0
- Initial release
- Multi-stage build support
- Docker Compose generation
- Security hardening
- Multiple language support
Author
GLINCKER Team
- Repository: claude-code-marketplace