[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MC7MD4P8FAB9BF878P0PR9":3,"skill-same:01M6MC7MD4P8FAB9BF878P0PR9":79},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":59,"commitSha":60,"skillDirectory":61,"forksCount":13,"repositoryHtmlUrl":62,"repositoryHomepageUrl":6,"ownerHtmlUrl":63,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":64,"install":65,"resources":78},"01M6MC7MD4P8FAB9BF878P0PR9","docker-development",null,"Docker and container development agent skill and plugin for Dockerfile optimization, docker-compose orchestration, multi-stage builds, and container security hardening. Use when: user wants to optimize a Dockerfile, create or improve docker-compose configurations, implement multi-stage builds, audit container security, reduce image size, or follow container best practices. Covers build performance, layer caching, secret management, and production-ready container patterns.","JiayiV\u002Fquestion_mixing","JiayiV","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F54466889?v=4","01M6JFJYYMRZ3QRGP9339JNQ2K","01M6JFJZ35KB0QVT50NAHPJA7G",0,"MIT","https:\u002F\u002Fgithub.com\u002FJiayiV\u002Fquestion_mixing\u002Fblob\u002Fmain\u002Fskills\u002Fpublic-02-claude-skills-main-engineering-docker-development-skills-docker-development-skill-9b29a46a\u002FSKILL.md",[17,22,25],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":26,"categoryName":27,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"docker","docker development","development","ready","reduce","production-ready","layer","container security hardening","caching","container security","optimize","container development","performance","image","improve","audit","create","security","dockerfile","orchestration","2026-11-10 10:12:30",false,"---\nname: \"docker-development\"\ndescription: \"Docker and container development agent skill and plugin for Dockerfile optimization, docker-compose orchestration, multi-stage builds, and container security hardening. Use when: user wants to optimize a Dockerfile, create or improve docker-compose configurations, implement multi-stage builds, audit container security, reduce image size, or follow container best practices. Covers build performance, layer caching, secret management, and production-ready container patterns.\"\nlicense: MIT\nmetadata:\n  version: 1.0.0\n  author: Alireza Rezvani\n  category: engineering\n  updated: 2026-03-16\n---\n\n# Docker Development\n\n> Smaller images. Faster builds. Secure containers. No guesswork.\n\nOpinionated Docker workflow that turns bloated Dockerfiles into production-grade containers. Covers optimization, multi-stage builds, compose orchestration, and security hardening.\n\nNot a Docker tutorial — a set of concrete decisions about how to build containers that don't waste time, space, or attack surface.\n\n---\n\n## Slash Commands\n\n| Command | What it does |\n|---------|-------------|\n| `\u002Fdocker:optimize` | Analyze and optimize a Dockerfile for size, speed, and layer caching |\n| `\u002Fdocker:compose` | Generate or improve docker-compose.yml with best practices |\n| `\u002Fdocker:security` | Audit a Dockerfile or running container for security issues |\n\n---\n\n## When This Skill Activates\n\nRecognize these patterns from the user:\n\n- \"Optimize this Dockerfile\"\n- \"My Docker build is slow\"\n- \"Create a docker-compose for this project\"\n- \"Is this Dockerfile secure?\"\n- \"Reduce my Docker image size\"\n- \"Set up multi-stage builds\"\n- \"Docker best practices for [language\u002Fframework]\"\n- Any request involving: Dockerfile, docker-compose, container, image size, build cache, Docker security\n\nIf the user has a Dockerfile or wants to containerize something → this skill applies.\n\n---\n\n## Workflow\n\n### `\u002Fdocker:optimize` — Dockerfile Optimization\n\n1. **Analyze current state**\n   - Read the Dockerfile\n   - Identify base image and its size\n   - Count layers (each RUN\u002FCOPY\u002FADD = 1 layer)\n   - Check for common anti-patterns\n\n2. **Apply optimization checklist**\n\n   ```\n   BASE IMAGE\n   ├── Use specific tags, never :latest in production\n   ├── Prefer slim\u002Falpine variants (debian-slim > ubuntu > debian)\n   ├── Pin digest for reproducibility in CI: image@sha256:...\n   └── Match base to runtime needs (don't use python:3.12 for a compiled binary)\n\n   LAYER OPTIMIZATION\n   ├── Combine related RUN commands with && \\\n   ├── Order layers: least-changing first (deps before source code)\n   ├── Clean package manager cache in the same RUN layer\n   ├── Use .dockerignore to exclude unnecessary files\n   └── Separate build deps from runtime deps\n\n   BUILD CACHE\n   ├── COPY dependency files before source code (package.json, requirements.txt, go.mod)\n   ├── Install deps in a separate layer from code copy\n   ├── Use BuildKit cache mounts: --mount=type=cache,target=\u002Froot\u002F.cache\n   └── Avoid COPY . . before dependency installation\n\n   MULTI-STAGE BUILDS\n   ├── Stage 1: build (full SDK, build tools, dev deps)\n   ├── Stage 2: runtime (minimal base, only production artifacts)\n   ├── COPY --from=builder only what's needed\n   └── Final image should have NO build tools, NO source code, NO dev deps\n   ```\n\n3. **Generate optimized Dockerfile**\n   - Apply all relevant optimizations\n   - Add inline comments explaining each decision\n   - Report estimated size reduction\n\n4. **Validate**\n   ```bash\n   python3 scripts\u002Fdockerfile_analyzer.py Dockerfile\n   ```\n\n### `\u002Fdocker:compose` — Docker Compose Configuration\n\n1. **Identify services**\n   - Application (web, API, worker)\n   - Database (postgres, mysql, redis, mongo)\n   - Cache (redis, memcached)\n   - Queue (rabbitmq, kafka)\n   - Reverse proxy (nginx, traefik, caddy)\n\n2. **Apply compose best practices**\n\n   ```\n   SERVICES\n   ├── Use depends_on with condition: service_healthy\n   ├── Add healthchecks for every service\n   ├── Set resource limits (mem_limit, cpus)\n   ├── Use named volumes for persistent data\n   └── Pin image versions\n\n   NETWORKING\n   ├── Create explicit networks (don't rely on default)\n   ├── Separate frontend and backend networks\n   ├── Only expose ports that need external access\n   └── Use internal: true for backend-only networks\n\n   ENVIRONMENT\n   ├── Use env_file for secrets, not inline environment\n   ├── Never commit .env files (add to .gitignore)\n   ├── Use variable substitution: ${VAR:-default}\n   └── Document all required env vars\n\n   DEVELOPMENT vs PRODUCTION\n   ├── Use compose profiles or override files\n   ├── Dev: bind mounts for hot reload, debug ports exposed\n   ├── Prod: named volumes, no debug ports, restart: unless-stopped\n   └── docker-compose.override.yml for dev-only config\n   ```\n\n3. **Generate compose file**\n   - Output docker-compose.yml with healthchecks, networks, volumes\n   - Generate .env.example with all required variables documented\n   - Add dev\u002Fprod profile annotations\n\n### `\u002Fdocker:security` — Container Security Audit\n\n1. **Dockerfile audit**\n\n   | Check | Severity | Fix |\n   |-------|----------|-----|\n   | Running as root | Critical | Add `USER nonroot` after creating user |\n   | Using :latest tag | High | Pin to specific version |\n   | Secrets in ENV\u002FARG | Critical | Use BuildKit secrets: `--mount=type=secret` |\n   | COPY with broad glob | Medium | Use specific paths, add .dockerignore |\n   | Unnecessary EXPOSE | Low | Only expose ports the app uses |\n   | No HEALTHCHECK | Medium | Add HEALTHCHECK with appropriate interval |\n   | Privileged instructions | High | Avoid `--privileged`, drop capabilities |\n   | Package manager cache retained | Low | Clean in same RUN layer |\n\n2. **Runtime security checks**\n\n   | Check | Severity | Fix |\n   |-------|----------|-----|\n   | Container running as root | Critical | Set user in Dockerfile or compose |\n   | Writable root filesystem | Medium | Use `read_only: true` in compose |\n   | All capabilities retained | High | Drop all, add only needed: `cap_drop: [ALL]` |\n   | No resource limits | Medium | Set `mem_limit` and `cpus` |\n   | Host network mode | High | Use bridge or custom network |\n   | Sensitive mounts | Critical | Never mount \u002Fetc, \u002Fvar\u002Frun\u002Fdocker.sock in prod |\n   | No log driver configured | Low | Set `logging:` with size limits |\n\n3. **Generate security report**\n   ```\n   SECURITY AUDIT — [Dockerfile\u002FImage name]\n   Date: [timestamp]\n\n   CRITICAL: [count]\n   HIGH:     [count]\n   MEDIUM:   [count]\n   LOW:      [count]\n\n   [Detailed findings with fix recommendations]\n   ```\n\n---\n\n## Tooling\n\n### `scripts\u002Fdockerfile_analyzer.py`\n\nCLI utility for static analysis of Dockerfiles.\n\n**Features:**\n- Layer count and optimization suggestions\n- Base image analysis with size estimates\n- Anti-pattern detection (15+ rules)\n- Security issue flagging\n- Multi-stage build detection and validation\n- JSON and text output\n\n**Usage:**\n```bash\n# Analyze a Dockerfile\npython3 scripts\u002Fdockerfile_analyzer.py Dockerfile\n\n# JSON output\npython3 scripts\u002Fdockerfile_analyzer.py Dockerfile --output json\n\n# Analyze with security focus\npython3 scripts\u002Fdockerfile_analyzer.py Dockerfile --security\n\n# Check a specific directory\npython3 scripts\u002Fdockerfile_analyzer.py path\u002Fto\u002FDockerfile\n```\n\n### `scripts\u002Fcompose_validator.py`\n\nCLI utility for validating docker-compose files.\n\n**Features:**\n- Service dependency validation\n- Healthcheck presence detection\n- Network configuration analysis\n- Volume mount validation\n- Environment variable audit\n- Port conflict detection\n- Best practice scoring\n\n**Usage:**\n```bash\n# Validate a compose file\npython3 scripts\u002Fcompose_validator.py docker-compose.yml\n\n# JSON output\npython3 scripts\u002Fcompose_validator.py docker-compose.yml --output json\n\n# Strict mode (fail on warnings)\npython3 scripts\u002Fcompose_validator.py docker-compose.yml --strict\n```\n\n---\n\n## Multi-Stage Build Patterns\n\n### Pattern 1: Compiled Language (Go, Rust, C++)\n\n```dockerfile\n# Build stage\nFROM golang:1.22-alpine AS builder\nWORKDIR \u002Fapp\nCOPY go.mod go.sum .\u002F\nRUN go mod download\nCOPY . .\nRUN CGO_ENABLED=0 go build -ldflags=\"-s -w\" -o \u002Fapp\u002Fserver .\u002Fcmd\u002Fserver\n\n# Runtime stage\nFROM gcr.io\u002Fdistroless\u002Fstatic-debian12\nCOPY --from=builder \u002Fapp\u002Fserver \u002Fserver\nUSER nonroot:nonroot\nENTRYPOINT [\"\u002Fserver\"]\n```\n\n### Pattern 2: Node.js \u002F TypeScript\n\n```dockerfile\n# Dependencies stage\nFROM node:20-alpine AS deps\nWORKDIR \u002Fapp\nCOPY package.json package-lock.json .\u002F\nRUN npm ci --production=false\n\n# Build stage\nFROM deps AS builder\nCOPY . .\nRUN npm run build\n\n# Runtime stage\nFROM node:20-alpine\nWORKDIR \u002Fapp\nRUN addgroup -g 1001 -S appgroup && adduser -S appuser -u 1001\nCOPY --from=builder \u002Fapp\u002Fdist .\u002Fdist\nCOPY --from=deps \u002Fapp\u002Fnode_modules .\u002Fnode_modules\nCOPY package.json .\u002F\nUSER appuser\nEXPOSE 3000\nCMD [\"node\", \"dist\u002Findex.js\"]\n```\n\n### Pattern 3: Python\n\n```dockerfile\n# Build stage\nFROM python:3.12-slim AS builder\nWORKDIR \u002Fapp\nCOPY requirements.txt .\nRUN pip install --no-cache-dir --prefix=\u002Finstall -r requirements.txt\n\n# Runtime stage\nFROM python:3.12-slim\nWORKDIR \u002Fapp\nRUN groupadd -r appgroup && useradd -r -g appgroup appuser\nCOPY --from=builder \u002Finstall \u002Fusr\u002Flocal\nCOPY . .\nUSER appuser\nEXPOSE 8000\nCMD [\"python\", \"-m\", \"uvicorn\", \"main:app\", \"--host\", \"0.0.0.0\", \"--port\", \"8000\"]\n```\n\n---\n\n## Base Image Decision Tree\n\n```\nIs it a compiled binary (Go, Rust, C)?\n├── Yes → distroless\u002Fstatic or scratch\n└── No\n    ├── Need a shell for debugging?\n    │   ├── Yes → alpine variant (e.g., node:20-alpine)\n    │   └── No → distroless variant\n    ├── Need glibc (not musl)?\n    │   ├── Yes → slim variant (e.g., python:3.12-slim)\n    │   └── No → alpine variant\n    └── Need specific OS packages?\n        ├── Many → debian-slim\n        └── Few → alpine + apk add\n```\n\n---\n\n## Proactive Triggers\n\nFlag these without being asked:\n\n- **Dockerfile uses :latest** → Suggest pinning to a specific version tag.\n- **No .dockerignore** → Create one. At minimum: `.git`, `node_modules`, `__pycache__`, `.env`.\n- **COPY . . before dependency install** → Cache bust. Reorder to install deps first.\n- **Running as root** → Add USER instruction. No exceptions for production.\n- **Secrets in ENV or ARG** → Use BuildKit secret mounts. Never bake secrets into layers.\n- **Image over 1GB** → Multi-stage build required. No reason for a production image this large.\n- **No healthcheck** → Add one. Orchestrators (Compose, K8s) need it for proper lifecycle management.\n- **apt-get without cleanup in same layer** → `rm -rf \u002Fvar\u002Flib\u002Fapt\u002Flists\u002F*` in the same RUN.\n\n---\n\n## Installation\n\n### One-liner (any tool)\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Falirezarezvani\u002Fclaude-skills.git\ncp -r claude-skills\u002Fengineering\u002Fdocker-development ~\u002F.claude\u002Fskills\u002F\n```\n\n### Multi-tool install\n```bash\n.\u002Fscripts\u002Fconvert.sh --skill docker-development --tool codex|gemini|cursor|windsurf|openclaw\n```\n\n### OpenClaw\n```bash\nclawhub install cs-docker-development\n```\n\n---\n\n## Related Skills\n\n- **senior-devops** — Broader DevOps scope (CI\u002FCD, IaC, monitoring). Complementary — use docker-development for container-specific work, senior-devops for pipeline and infrastructure.\n- **senior-security** — Application security. Complementary — docker-development covers container security, senior-security covers application-level threats.\n- **autoresearch-agent** — Can optimize Docker build times or image sizes as measurable experiments.\n- **ci-cd-pipeline-builder** — Pipeline construction. Complementary — docker-development builds the containers, ci-cd-pipeline-builder deploys them.\n","# Docker Development\n\n> Smaller images. Faster builds. Secure containers. No guesswork.\n\nOpinionated Docker workflow that turns bloated Dockerfiles into production-grade containers. Covers optimization, multi-stage builds, compose orchestration, and security hardening.\n\nNot a Docker tutorial — a set of concrete decisions about how to build containers that don't waste time, space, or attack surface.\n\n---\n\n## Slash Commands\n\n| Command | What it does |\n|---------|-------------|\n| `\u002Fdocker:optimize` | Analyze and optimize a Dockerfile for size, speed, and layer caching |\n| `\u002Fdocker:compose` | Generate or improve docker-compose.yml with best practices |\n| `\u002Fdocker:security` | Audit a Dockerfile or running container for security issues |\n\n---\n\n## When This Skill Activates\n\nRecognize these patterns from the user:\n\n- \"Optimize this Dockerfile\"\n- \"My Docker build is slow\"\n- \"Create a docker-compose for this project\"\n- \"Is this Dockerfile secure?\"\n- \"Reduce my Docker image size\"\n- \"Set up multi-stage builds\"\n- \"Docker best practices for [language\u002Fframework]\"\n- Any request involving: Dockerfile, docker-compose, container, image size, build cache, Docker security\n\nIf the user has a Dockerfile or wants to containerize something → this skill applies.\n\n---\n\n## Workflow\n\n### `\u002Fdocker:optimize` — Dockerfile Optimization\n\n1. **Analyze current state**\n   - Read the Dockerfile\n   - Identify base image and its size\n   - Count layers (each RUN\u002FCOPY\u002FADD = 1 layer)\n   - Check for common anti-patterns\n\n2. **Apply optimization checklist**\n\n   ```\n   BASE IMAGE\n   ├── Use specific tags, never :latest in production\n   ├── Prefer slim\u002Falpine variants (debian-slim > ubuntu > debian)\n   ├── Pin digest for reproducibility in CI: image@sha256:...\n   └── Match base to runtime needs (don't use python:3.12 for a compiled binary)\n\n   LAYER OPTIMIZATION\n   ├── Combine related RUN commands with && \\\n   ├── Order layers: least-changing first (deps before source code)\n   ├── Clean package manager cache in the same RUN layer\n   ├── Use .dockerignore to exclude unnecessary files\n   └── Separate build deps from runtime deps\n\n   BUILD CACHE\n   ├── COPY dependency files before source code (package.json, requirements.txt, go.mod)\n   ├── Install deps in a separate layer from code copy\n   ├── Use BuildKit cache mounts: --mount=type=cache,target=\u002Froot\u002F.cache\n   └── Avoid COPY . . before dependency installation\n\n   MULTI-STAGE BUILDS\n   ├── Stage 1: build (full SDK, build tools, dev deps)\n   ├── Stage 2: runtime (minimal base, only production artifacts)\n   ├── COPY --from=builder only what's needed\n   └── Final image should have NO build tools, NO source code, NO dev deps\n   ```\n\n3. **Generate optimized Dockerfile**\n   - Apply all relevant optimizations\n   - Add inline comments explaining each decision\n   - Report estimated size reduction\n\n4. **Validate**\n   ```bash\n   python3 scripts\u002Fdockerfile_analyzer.py Dockerfile\n   ```\n\n### `\u002Fdocker:compose` — Docker Compose Configuration\n\n1. **Identify services**\n   - Application (web, API, worker)\n   - Database (postgres, mysql, redis, mongo)\n   - Cache (redis, memcached)\n   - Queue (rabbitmq, kafka)\n   - Reverse proxy (nginx, traefik, caddy)\n\n2. **Apply compose best practices**\n\n   ```\n   SERVICES\n   ├── Use depends_on with condition: service_healthy\n   ├── Add healthchecks for every service\n   ├── Set resource limits (mem_limit, cpus)\n   ├── Use named volumes for persistent data\n   └── Pin image versions\n\n   NETWORKING\n   ├── Create explicit networks (don't rely on default)\n   ├── Separate frontend and backend networks\n   ├── Only expose ports that need external access\n   └── Use internal: true for backend-only networks\n\n   ENVIRONMENT\n   ├── Use env_file for secrets, not inline environment\n   ├── Never commit .env files (add to .gitignore)\n   ├── Use variable substitution: ${VAR:-default}\n   └── Document all required env vars\n\n   DEVELOPMENT vs PRODUCTION\n   ├── Use compose profiles or override files\n   ├── Dev: bind mounts for hot reload, debug ports exposed\n   ├── Prod: named volumes, no debug ports, restart: unless-stopped\n   └── docker-compose.override.yml for dev-only config\n   ```\n\n3. **Generate compose file**\n   - Output docker-compose.yml with healthchecks, networks, volumes\n   - Generate .env.example with all required variables documented\n   - Add dev\u002Fprod profile annotations\n\n### `\u002Fdocker:security` — Container Security Audit\n\n1. **Dockerfile audit**\n\n   | Check | Severity | Fix |\n   |-------|----------|-----|\n   | Running as root | Critical | Add `USER nonroot` after creating user |\n   | Using :latest tag | High | Pin to specific version |\n   | Secrets in ENV\u002FARG | Critical | Use BuildKit secrets: `--mount=type=secret` |\n   | COPY with broad glob | Medium | Use specific paths, add .dockerignore |\n   | Unnecessary EXPOSE | Low | Only expose ports the app uses |\n   | No HEALTHCHECK | Medium | Add HEALTHCHECK with appropriate interval |\n   | Privileged instructions | High | Avoid `--privileged`, drop capabilities |\n   | Package manager cache retained | Low | Clean in same RUN layer |\n\n2. **Runtime security checks**\n\n   | Check | Severity | Fix |\n   |-------|----------|-----|\n   | Container running as root | Critical | Set user in Dockerfile or compose |\n   | Writable root filesystem | Medium | Use `read_only: true` in compose |\n   | All capabilities retained | High | Drop all, add only needed: `cap_drop: [ALL]` |\n   | No resource limits | Medium | Set `mem_limit` and `cpus` |\n   | Host network mode | High | Use bridge or custom network |\n   | Sensitive mounts | Critical | Never mount \u002Fetc, \u002Fvar\u002Frun\u002Fdocker.sock in prod |\n   | No log driver configured | Low | Set `logging:` with size limits |\n\n3. **Generate security report**\n   ```\n   SECURITY AUDIT — [Dockerfile\u002FImage name]\n   Date: [timestamp]\n\n   CRITICAL: [count]\n   HIGH:     [count]\n   MEDIUM:   [count]\n   LOW:      [count]\n\n   [Detailed findings with fix recommendations]\n   ```\n\n---\n\n## Tooling\n\n### `scripts\u002Fdockerfile_analyzer.py`\n\nCLI utility for static analysis of Dockerfiles.\n\n**Features:**\n- Layer count and optimization suggestions\n- Base image analysis with size estimates\n- Anti-pattern detection (15+ rules)\n- Security issue flagging\n- Multi-stage build detection and validation\n- JSON and text output\n\n**Usage:**\n```bash\n# Analyze a Dockerfile\npython3 scripts\u002Fdockerfile_analyzer.py Dockerfile\n\n# JSON output\npython3 scripts\u002Fdockerfile_analyzer.py Dockerfile --output json\n\n# Analyze with security focus\npython3 scripts\u002Fdockerfile_analyzer.py Dockerfile --security\n\n# Check a specific directory\npython3 scripts\u002Fdockerfile_analyzer.py path\u002Fto\u002FDockerfile\n```\n\n### `scripts\u002Fcompose_validator.py`\n\nCLI utility for validating docker-compose files.\n\n**Features:**\n- Service dependency validation\n- Healthcheck presence detection\n- Network configuration analysis\n- Volume mount validation\n- Environment variable audit\n- Port conflict detection\n- Best practice scoring\n\n**Usage:**\n```bash\n# Validate a compose file\npython3 scripts\u002Fcompose_validator.py docker-compose.yml\n\n# JSON output\npython3 scripts\u002Fcompose_validator.py docker-compose.yml --output json\n\n# Strict mode (fail on warnings)\npython3 scripts\u002Fcompose_validator.py docker-compose.yml --strict\n```\n\n---\n\n## Multi-Stage Build Patterns\n\n### Pattern 1: Compiled Language (Go, Rust, C++)\n\n```dockerfile\n# Build stage\nFROM golang:1.22-alpine AS builder\nWORKDIR \u002Fapp\nCOPY go.mod go.sum .\u002F\nRUN go mod download\nCOPY . .\nRUN CGO_ENABLED=0 go build -ldflags=\"-s -w\" -o \u002Fapp\u002Fserver .\u002Fcmd\u002Fserver\n\n# Runtime stage\nFROM gcr.io\u002Fdistroless\u002Fstatic-debian12\nCOPY --from=builder \u002Fapp\u002Fserver \u002Fserver\nUSER nonroot:nonroot\nENTRYPOINT [\"\u002Fserver\"]\n```\n\n### Pattern 2: Node.js \u002F TypeScript\n\n```dockerfile\n# Dependencies stage\nFROM node:20-alpine AS deps\nWORKDIR \u002Fapp\nCOPY package.json package-lock.json .\u002F\nRUN npm ci --production=false\n\n# Build stage\nFROM deps AS builder\nCOPY . .\nRUN npm run build\n\n# Runtime stage\nFROM node:20-alpine\nWORKDIR \u002Fapp\nRUN addgroup -g 1001 -S appgroup && adduser -S appuser -u 1001\nCOPY --from=builder \u002Fapp\u002Fdist .\u002Fdist\nCOPY --from=deps \u002Fapp\u002Fnode_modules .\u002Fnode_modules\nCOPY package.json .\u002F\nUSER appuser\nEXPOSE 3000\nCMD [\"node\", \"dist\u002Findex.js\"]\n```\n\n### Pattern 3: Python\n\n```dockerfile\n# Build stage\nFROM python:3.12-slim AS builder\nWORKDIR \u002Fapp\nCOPY requirements.txt .\nRUN pip install --no-cache-dir --prefix=\u002Finstall -r requirements.txt\n\n# Runtime stage\nFROM python:3.12-slim\nWORKDIR \u002Fapp\nRUN groupadd -r appgroup && useradd -r -g appgroup appuser\nCOPY --from=builder \u002Finstall \u002Fusr\u002Flocal\nCOPY . .\nUSER appuser\nEXPOSE 8000\nCMD [\"python\", \"-m\", \"uvicorn\", \"main:app\", \"--host\", \"0.0.0.0\", \"--port\", \"8000\"]\n```\n\n---\n\n## Base Image Decision Tree\n\n```\nIs it a compiled binary (Go, Rust, C)?\n├── Yes → distroless\u002Fstatic or scratch\n└── No\n    ├── Need a shell for debugging?\n    │   ├── Yes → alpine variant (e.g., node:20-alpine)\n    │   └── No → distroless variant\n    ├── Need glibc (not musl)?\n    │   ├── Yes → slim variant (e.g., python:3.12-slim)\n    │   └── No → alpine variant\n    └── Need specific OS packages?\n        ├── Many → debian-slim\n        └── Few → alpine + apk add\n```\n\n---\n\n## Proactive Triggers\n\nFlag these without being asked:\n\n- **Dockerfile uses :latest** → Suggest pinning to a specific version tag.\n- **No .dockerignore** → Create one. At minimum: `.git`, `node_modules`, `__pycache__`, `.env`.\n- **COPY . . before dependency install** → Cache bust. Reorder to install deps first.\n- **Running as root** → Add USER instruction. No exceptions for production.\n- **Secrets in ENV or ARG** → Use BuildKit secret mounts. Never bake secrets into layers.\n- **Image over 1GB** → Multi-stage build required. No reason for a production image this large.\n- **No healthcheck** → Add one. Orchestrators (Compose, K8s) need it for proper lifecycle management.\n- **apt-get without cleanup in same layer** → `rm -rf \u002Fvar\u002Flib\u002Fapt\u002Flists\u002F*` in the same RUN.\n\n---\n\n## Installation\n\n### One-liner (any tool)\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Falirezarezvani\u002Fclaude-skills.git\ncp -r claude-skills\u002Fengineering\u002Fdocker-development ~\u002F.claude\u002Fskills\u002F\n```\n\n### Multi-tool install\n```bash\n.\u002Fscripts\u002Fconvert.sh --skill docker-development --tool codex|gemini|cursor|windsurf|openclaw\n```\n\n### OpenClaw\n```bash\nclawhub install cs-docker-development\n```\n\n---\n\n## Related Skills\n\n- **senior-devops** — Broader DevOps scope (CI\u002FCD, IaC, monitoring). Complementary — use docker-development for container-specific work, senior-devops for pipeline and infrastructure.\n- **senior-security** — Application security. Complementary — docker-development covers container security, senior-security covers application-level threats.\n- **autoresearch-agent** — Can optimize Docker build times or image sizes as measurable experiments.\n- **ci-cd-pipeline-builder** — Pipeline construction. Complementary — docker-development builds the containers, ci-cd-pipeline-builder deploys them.\n",{"name":5,"license":14,"metadata":54,"description":7},{"author":55,"updated":56,"version":57,"category":58},"Alireza Rezvani",1773619200000,"1.0.0","engineering","main","068c2486ccc0f8d200a3db4d21ec137064eda3b4","skills\u002Fpublic-02-claude-skills-main-engineering-docker-development-skills-docker-development-skill-9b29a46a","https:\u002F\u002Fgithub.com\u002FJiayiV\u002Fquestion_mixing","https:\u002F\u002Fgithub.com\u002FJiayiV","2026-08-25 16:30:52",{"source":8,"skillName":5,"commands":66,"prompt":76,"zipAvailable":77},[67,70,73],{"tool":68,"command":69},"npx","npx skills add JiayiV\u002Fquestion_mixing --skill docker-development",{"tool":71,"command":72},"bunx","bunx skills add JiayiV\u002Fquestion_mixing --skill docker-development",{"tool":74,"command":75},"pnpm","pnpm dlx skills add JiayiV\u002Fquestion_mixing --skill docker-development","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FJiayiV\u002Fquestion_mixing\u002Fblob\u002Fmain\u002Fskills\u002Fpublic-02-claude-skills-main-engineering-docker-development-skills-docker-development-skill-9b29a46a\u002FSKILL.md",true,[],[80,105,133,160,186,221],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":49},"01M6NN9PJS9NHWPDG4QP93BP8F","webmcpify","Make a web app agent-ready — propose a WebMCP tool manifest, integrate, verify in a real browser, heal; unrelated code stays untouched. Use for \"webmcpify\", \"add WebMCP\", or \"expose app actions to AI agents\".","https:\u002F\u002Fgithub.com\u002FJiayiV\u002Fquestion_mixing\u002Fblob\u002Fmain\u002Fskills\u002Fwebmcpify\u002FSKILL.md",[],[82,87,88,89,90,91,92,93,94,95,96,97,98,99,32,100,101,102,103,104],"github","ai agents","web","notes","code","browser","https","actions","manifest","inventory","verify","tool","use","unrelated","app","scope","for","webmcp",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":109,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":49},"01M6NN6KZE5RBN6NGHN2WXV1RE","vardoger-analyze","Use when the user asks to personalize the GitHub Copilot CLI assistant, adapt Copilot to their style, use vardoger, or analyze their Copilot CLI conversation history. Reads the local session directory at `~\u002F.copilot\u002Fsession-state\u002F`, extracts recurring preferences and conventions, and writes a fenced personalization block into `~\u002F.copilot\u002Fcopilot-instructions.md`. Runs entirely on the user's machine via the local `vardoger` CLI (`pipx install vardoger`); no network calls and no uploads. Triggers: 'personalize my copilot', 'analyze my copilot history', 'tailor copilot to me', 'run vardoger', 'update my copilot instructions from history', 'make copilot learn my style'.","Apache-2.0","https:\u002F\u002Fgithub.com\u002FJiayiV\u002Fquestion_mixing\u002Fblob\u002Fmain\u002Fskills\u002Fvardoger-analyze\u002FSKILL.md",[],[113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132],"vardoger analyze","analyze","directory","cli","github copilot","copilot","run","update","learn","network","my style","install","conversation","me","local","github copilot cli","pipx","my","at","copilot instructions",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":141,"publishedAt":49},"01M6NN3CZGQP3XAJ04BM1NNYGT","transloadit-media-processing","Process media files (video, audio, images, documents) using Transloadit. Use when asked to encode video to HLS\u002FMP4, generate thumbnails, resize or watermark images, extract audio, concatenate clips, add subtitles, OCR documents, or run any media processing pipeline. Covers 86+ processing robots for file transformation at scale.","https:\u002F\u002Fgithub.com\u002FJiayiV\u002Fquestion_mixing\u002Fblob\u002Fmain\u002Fskills\u002Ftransloadit-media-processing\u002FSKILL.md",[139,140],{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":26,"categoryName":27,"taxonomyType":20,"taxonomyTypeDesc":21},[142,143,144,145,146,147,148,149,150,151,152,153,154,99,155,156,157,158,103,159],"transloadit media processing","Media","media processing","processing","MCP","mcp server","documents","subtitles","pipeline","ocr","Video","Audio","mp4","images","files","transformation","free","hls",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":167,"publishedAt":49},"01M6NN28E92F9GH4WFYQ2H1Y15","terraform-azurerm-set-diff-analyzer","Analyze Terraform plan JSON output for AzureRM Provider to distinguish between false-positive diffs (order-only changes in Set-type attributes) and actual resource changes. Use when reviewing terraform plan output for Azure resources like Application Gateway, Load Balancer, Firewall, Front Door, NSG, and other resources with Set-type attributes that cause spurious diffs due to internal ordering changes.","https:\u002F\u002Fgithub.com\u002FJiayiV\u002Fquestion_mixing\u002Fblob\u002Fmain\u002Fskills\u002Fterraform-azurerm-set-diff-analyzer\u002FSKILL.md",[166],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[168,169,170,171,172,173,174,175,176,99,177,178,179,180,181,182,183,184,185,103],"terraform","SET","terraform azurerm set diff analyzer","diff","analyzer","diffs","azure","gateway","firewall","only","resource changes","provider","resources","load balancer","attributes","front","load","balancer",{"skillNo":187,"name":188,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":190,"categories":191,"keywords":203,"publishedAt":49},"01M6NN1QMH2TDYWTH3XY3N5XPV","technical-job-search","Use this skill when a software engineer asks for help with job search tasks: parsing or analyzing a job description, tailoring a CV\u002Fresume, writing a cover letter, evaluating a job offer, or drafting a post-interview follow-up email. Do not activate for general career advice unrelated to an active job search action.","https:\u002F\u002Fgithub.com\u002FJiayiV\u002Fquestion_mixing\u002Fblob\u002Fmain\u002Fskills\u002Ftechnical-job-search\u002FSKILL.md",[192,195,200],{"categoryNo":193,"categoryName":194,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":196,"categoryName":197,"taxonomyType":198,"taxonomyTypeDesc":199},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",{"categoryNo":201,"categoryName":202,"taxonomyType":198,"taxonomyTypeDesc":199},"01JBSEEDCAT000000000000038","人力资源",[204,205,206,207,208,209,210,211,114,212,99,213,214,215,216,217,218,219,103,220],"search","Job Search","technical job search","technical","writing","tasks","email","parsing","interview","up","engineer","general","activate","do","task","cv","letter",{"skillNo":222,"name":223,"nameZh":6,"description":224,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":225,"categories":226,"keywords":227,"publishedAt":49},"01M6NMZFA67XYS1GS09WT42235","steno-mode","Shorthand-first response compression that cuts ~40% of response tokens while preserving technical precision and exact literals. Use when the user says \"steno mode\", \"shorthand mode\", \"compressed responses\", \"token reduction\", \"brief structured output\", or invokes \u002Fsteno. Supports four compression levels: lite, brief, court, machine. Do not trigger for requests needing polished prose such as onboarding\u002Ftutorial content, stakeholder or customer-facing copy, or teaching-focused explanations.","https:\u002F\u002Fgithub.com\u002FJiayiV\u002Fquestion_mixing\u002Fblob\u002Fmain\u002Fskills\u002Fsteno-mode\u002FSKILL.md",[],[228,229,230,231,232,207,233,99,217,234,235,236,237,238,239,240,241,242,103,243],"steno mode","mode","customer","brief","first","tutorial","teaching","tokens","as","trigger","structured output","machine","output","court","requests","response compression"]