Claude-skill-registry docker-rocker
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-rocker" ~/.claude/skills/majiayu000-claude-skill-registry-docker-rocker && rm -rf "$T"
manifest:
skills/data/docker-rocker/SKILL.mdsource content
Docker Rocker
Production-grade Docker automation for Python FastAPI web API projects using multi-stage builds, UV package manager, and performance optimization strategies.
What This Skill Does
- Creates optimized multi-stage Dockerfiles (Builder → Runtime → Testing stages)
- Configures UV package manager for 50-70% faster dependency installation
- Implements layer caching strategies for rapid rebuilds
- Sets up non-root user security configurations
- Generates docker-compose files for development and production
- Optimizes for SQLModel/Neon database connections in containers
- Configures Pydantic settings for container environments
What This Skill Does NOT Do
- Manage Kubernetes deployments (use dedicated k8s skills)
- Handle cloud-specific container registries (AWS ECR, GCR, ACR)
- Configure reverse proxies (Nginx, Traefik)
- Manage container orchestration at scale
- Handle secrets management beyond environment variables
Before Implementation
Gather context to ensure successful implementation:
| Source | Gather |
|---|---|
| Codebase | Project structure, existing Dockerfile, pyproject.toml/requirements.txt, app entry point |
| Conversation | Target deployment (dev/staging/prod), database connection requirements, special dependencies |
| Skill References | Multi-stage patterns from , optimization strategies, security practices |
| User Guidelines | Team Docker conventions, registry requirements, CI/CD integration needs |
Ensure all required context is gathered before implementing. Only ask user for THEIR specific requirements (domain expertise is in this skill).
Required Clarifications
Ask about USER's context before generating Dockerfiles:
| Question | Purpose |
|---|---|
| Deployment target? | Dev (hot-reload) vs Production (optimized) vs CI/CD (testing) |
| Package manager? | UV (recommended) vs pip vs Poetry |
| Database type? | Neon PostgreSQL, local PostgreSQL, SQLite, other |
| Special system deps? | Libraries requiring apt packages (Pillow, psycopg2, etc.) |
| Port configuration? | Default 80 or custom port |
Docker Deployment Stages
Stage Overview
| Stage | Purpose | Base Image | Final Size |
|---|---|---|---|
| Builder | Install dependencies, compile packages | python:3.12-slim | ~400MB (discarded) |
| Runtime | Production application | python:3.12-slim | ~150MB |
| Testing | CI/CD test execution | extends Builder | ~450MB |
| Development | Hot-reload for local dev | python:3.12-slim | ~300MB |
Stage Selection Logic
What is the deployment target? Production deployment? → Use Builder + Runtime stages → Minimal image, no dev dependencies CI/CD pipeline? → Use Builder + Testing stage → Include pytest, dev dependencies Local development? → Use Development stage → Volume mounts, hot-reload enabled All of the above? → Generate complete multi-stage Dockerfile with all targets
Workflow
1. Analyze Project Structure
# Check for existing configurations ls -la pyproject.toml uv.lock requirements*.txt Dockerfile docker-compose.yml
Identify:
- Package manager (UV if uv.lock exists, Poetry if poetry.lock, pip otherwise)
- Entry point (app/main.py, src/main.py, main.py)
- Dependencies requiring system packages
2. Select Dockerfile Template
Based on user's deployment target, use appropriate template from
assets/templates/:
| Target | Template |
|---|---|
| Production only | |
| With testing | |
| Development | |
| Full multi-stage | |
3. Configure Environment Variables
# Performance optimizations ENV UV_LINK_MODE=copy \ UV_COMPILE_BYTECODE=1 \ PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 # Application settings ENV APP_MODULE=app.main:app \ PORT=80
4. Optimize Layer Caching
Order Dockerfile instructions by change frequency:
- Base image (rarely changes)
- System dependencies (rarely changes)
- Python dependencies (changes occasionally)
- Application code (changes frequently)
5. Configure Database Connections
For Neon/PostgreSQL in containers:
# Use NullPool - let external pooler handle connections from sqlalchemy.pool import NullPool engine = create_async_engine( DATABASE_URL, poolclass=NullPool, pool_pre_ping=True, )
6. Generate docker-compose
Create appropriate compose file for target environment.
7. Validate Build
# Build and verify docker build --target runtime -t app:latest . docker run --rm app:latest python -c "import app; print('OK')"
Quick Commands
| Task | Command |
|---|---|
| Build production image | |
| Build test image | |
| Run tests in container | |
| Build with no cache | |
| Check image size | |
| Scan for vulnerabilities | |
Error Handling
| Error | Cause | Solution |
|---|---|---|
| UV not installed in image | Add |
| Dependencies not in runtime | Verify COPY of .venv from builder |
| Non-root user can't write | Use on COPY |
to DB | Network isolation | Use docker-compose networks or host.docker.internal |
| Container memory limit | Increase memory limit or optimize workers |
| Build cache not working | Layer order wrong | Reorder: deps before code |
Output Checklist
Before delivering Dockerfile, verify:
- Multi-stage build separates builder and runtime
- UV cache mounts configured for fast rebuilds
-
set for startup speedUV_COMPILE_BYTECODE=1 - Non-root user created and used
-
includes .venv, pycache, .git.dockerignore - Layer order optimized (deps before code)
- Health check configured
-
flag for FastAPI behind load balancer--proxy-headers - Database connection uses NullPool for external pooling
- Secrets not hardcoded (use environment variables)
Reference Files
| File | When to Read |
|---|---|
| Understanding stage architecture and patterns |
| Reducing image size and build time |
| FastAPI-specific Docker configurations |
| Container security hardening |
| SQLModel/Neon connection patterns in containers |
Asset Templates
| Template | Use Case |
|---|---|
| Complete multi-stage (Builder + Runtime + Testing) |
| Production-only optimized build |
| Development with hot-reload |
| Full development stack |
| Production compose |
| Standard ignore patterns |