
Docker Production
- 29 installs
- 2 repo stars
- Updated January 5, 2026
- pluginagentmarketplace/custom-plugin-docker
docker-production is an agent skill that guides solo builders through a Docker production checklist before and after release.
About
docker-production is a configuration-oriented agent skill that packages a Docker production playbook as skill metadata plus a four-part checklist: pre-deployment, monitoring, high availability, and backup/recovery. Solo builders shipping APIs or SaaS in containers can use it as a repeatable gate before promoting images, instead of improvising ops steps in chat. The bundled schema toggles validation strictness by environment (looser in development, strict in production) and wires optional integrations for git, linter, and formatter. It does not replace a full platform runbook, but it gives your coding agent a consistent vocabulary and ordered concerns when reviewing Dockerfiles, compose files, or deployment manifests for production readiness.
- Pre-deployment checklist: image scan, secrets, resource limits, health checks, logging
- Production monitoring block: CPU/memory metrics, centralized logs, alerts, dashboard
- High availability: replicas, load balancer, graceful shutdown, rolling updates
- Backup & recovery: volume backups, tested recovery, documented rollback
- Environment overrides with strict_mode enabled in production
Docker Production by the numbers
- 29 all-time installs (skills.sh)
- Ranked #863 of 1,453 DevOps & CI/CD skills by installs in the Skillselion catalog
- Security screen: HIGH risk (skills.sh audit)
- Data as of Jul 26, 2026 (Skillselion catalog sync)
npx skills add https://github.com/pluginagentmarketplace/custom-plugin-docker --skill docker-productionAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 29 |
|---|---|
| repo stars | ★ 2 |
| Security audit | 1 / 3 scanners passed |
| Last updated | January 5, 2026 |
| Repository | pluginagentmarketplace/custom-plugin-docker ↗ |
What it does
Run a structured Docker production readiness checklist before you ship containers to real users.
Who is it for?
Best when you're containerizing a backend or SaaS and want agent-guided release hardening without hiring a dedicated platform team.
Skip if: Local-only dev containers with no production target, or teams already standardized on a managed PaaS that owns scanning and HA end-to-end.
When should I use this skill?
You are preparing or operating Docker workloads in production and need a consistent checklist-driven review.
What you get
You get an ordered production checklist and environment-aware validation defaults so releases and ongoing ops follow the same Docker standards.
- Production readiness review against the checklist
- Environment-tuned validation settings (dev vs production strict_mode)
By the numbers
- 4 checklist sections: pre-deployment, monitoring, high availability, backup & recovery
Files
Docker Production Skill
Master production-grade Docker deployments with monitoring, logging, health checks, and resource management.
Purpose
Configure containers for production with proper observability, resource limits, and deployment strategies.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| monitoring | enum | No | prometheus | prometheus/datadog |
| logging | enum | No | json-file | json-file/loki/elk |
| replicas | number | No | 1 | Number of replicas |
Production Configuration
Health Checks
HEALTHCHECK --interval=30s --timeout=3s --retries=3 --start-period=60s \
CMD curl -f http://localhost:3000/health || exit 1# Compose health check
services:
app:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60sResource Limits
services:
app:
deploy:
resources:
limits:
cpus: '1'
memory: 1G
reservations:
cpus: '0.5'
memory: 512M
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3Logging Configuration
services:
app:
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
labels: "app,environment"Monitoring Stack
Prometheus + Grafana
services:
prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
grafana:
image: grafana/grafana:latest
ports:
- "3001:3000"
environment:
GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_PASSWORD}
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
ports:
- "8080:8080"Prometheus Config
# prometheus.yml
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'docker-containers'
docker_sd_configs:
- host: unix:///var/run/docker.sockDeployment Strategies
Rolling Update (Zero Downtime)
deploy:
update_config:
parallelism: 1
delay: 10s
failure_action: rollback
order: start-first
rollback_config:
parallelism: 1
delay: 10sBlue-Green
# Deploy new version
docker compose -p myapp-green up -d
# Switch traffic (update nginx/load balancer)
# Remove old version
docker compose -p myapp-blue downError Handling
Common Errors
| Error | Cause | Solution |
|---|---|---|
unhealthy | Health check failing | Check endpoint, increase start_period |
OOMKilled | Memory exceeded | Increase limit or optimize |
restart loop | App crash | Check logs, fix application |
Recovery
1. Check logs: docker logs --tail 100 <container> 2. Verify health: docker inspect --format='{{.State.Health.Status}}' 3. Rollback if needed
Troubleshooting
Debug Checklist
- [ ] Health check passing?
- [ ] Resources sufficient?
docker stats - [ ] Logs showing errors?
- [ ] Metrics collecting?
Diagnostics
# Resource usage
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
# Restart count
docker inspect --format='{{.RestartCount}}' <container>
# Recent events
docker events --filter 'container=<name>' --since 1hUsage
Skill("docker-production")Related Skills
- docker-debugging
- docker-ci-cd
- docker-security
# docker-production Configuration
# Category: containers
# Generated: 2025-12-30
skill:
name: docker-production
version: "1.0.0"
category: containers
settings:
# Default settings for docker-production
enabled: true
log_level: info
# Category-specific defaults
validation:
strict_mode: false
auto_fix: false
output:
format: markdown
include_examples: true
# Environment-specific overrides
environments:
development:
log_level: debug
validation:
strict_mode: false
production:
log_level: warn
validation:
strict_mode: true
# Integration settings
integrations:
# Enable/disable integrations
git: true
linter: true
formatter: true
# Docker Production Checklist
pre_deployment:
- Image scanned for vulnerabilities
- All secrets in Docker secrets
- Resource limits configured
- Health checks defined
- Logging configured
monitoring:
- Container metrics (CPU, memory)
- Application logs centralized
- Alerts configured
- Dashboard ready
high_availability:
- Multiple replicas
- Load balancer configured
- Graceful shutdown handling
- Rolling update strategy
backup_recovery:
- Volume backup scheduled
- Recovery tested
- Rollback plan documented
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "docker-production Configuration Schema",
"type": "object",
"properties": {
"skill": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"version": {
"type": "string",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"category": {
"type": "string",
"enum": [
"api",
"testing",
"devops",
"security",
"database",
"frontend",
"algorithms",
"machine-learning",
"cloud",
"containers",
"general"
]
}
},
"required": [
"name",
"version"
]
},
"settings": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"default": true
},
"log_level": {
"type": "string",
"enum": [
"debug",
"info",
"warn",
"error"
]
}
}
}
},
"required": [
"skill"
]
}Docker Production Guide
Overview
This guide provides comprehensive documentation for the docker-production skill in the custom-plugin-docker plugin.
Category: Containers
Quick Start
Prerequisites
- Familiarity with containers concepts
- Development environment set up
- Plugin installed and configured
Basic Usage
# Invoke the skill
claude "docker-production - [your task description]"
# Example
claude "docker-production - analyze the current implementation"Core Concepts
Key Principles
1. Consistency - Follow established patterns 2. Clarity - Write readable, maintainable code 3. Quality - Validate before deployment
Best Practices
- Always validate input data
- Handle edge cases explicitly
- Document your decisions
- Write tests for critical paths
Common Tasks
Task 1: Basic Implementation
# Example implementation pattern
def implement_docker_production(input_data):
"""
Implement docker-production functionality.
Args:
input_data: Input to process
Returns:
Processed result
"""
# Validate input
if not input_data:
raise ValueError("Input required")
# Process
result = process(input_data)
# Return
return resultTask 2: Advanced Usage
For advanced scenarios, consider:
- Configuration customization via
assets/config.yaml - Validation using
scripts/validate.py - Integration with other skills
Troubleshooting
Common Issues
| Issue | Cause | Solution |
|---|---|---|
| Skill not found | Not installed | Run plugin sync |
| Validation fails | Invalid config | Check config.yaml |
| Unexpected output | Missing context | Provide more details |
Related Resources
- SKILL.md - Skill specification
- config.yaml - Configuration options
- validate.py - Validation script
---
Last updated: 2025-12-30
Docker Production Patterns
Design Patterns
Pattern 1: Input Validation
Always validate input before processing:
def validate_input(data):
if data is None:
raise ValueError("Data cannot be None")
if not isinstance(data, dict):
raise TypeError("Data must be a dictionary")
return TruePattern 2: Error Handling
Use consistent error handling:
try:
result = risky_operation()
except SpecificError as e:
logger.error(f"Operation failed: {e}")
handle_error(e)
except Exception as e:
logger.exception("Unexpected error")
raisePattern 3: Configuration Loading
Load and validate configuration:
import yaml
def load_config(config_path):
with open(config_path) as f:
config = yaml.safe_load(f)
validate_config(config)
return configAnti-Patterns to Avoid
❌ Don't: Swallow Exceptions
# BAD
try:
do_something()
except:
pass✅ Do: Handle Explicitly
# GOOD
try:
do_something()
except SpecificError as e:
logger.warning(f"Expected error: {e}")
return default_valueCategory-Specific Patterns: Containers
Recommended Approach
1. Start with the simplest implementation 2. Add complexity only when needed 3. Test each addition 4. Document decisions
Common Integration Points
- Configuration:
assets/config.yaml - Validation:
scripts/validate.py - Documentation:
references/GUIDE.md
---
Pattern library for docker-production skill
#!/usr/bin/env python3
"""
Validation script for docker-production skill.
Category: containers
"""
import os
import sys
import yaml
import json
from pathlib import Path
def validate_config(config_path: str) -> dict:
"""
Validate skill configuration file.
Args:
config_path: Path to config.yaml
Returns:
dict: Validation result with 'valid' and 'errors' keys
"""
errors = []
if not os.path.exists(config_path):
return {"valid": False, "errors": ["Config file not found"]}
try:
with open(config_path, 'r') as f:
config = yaml.safe_load(f)
except yaml.YAMLError as e:
return {"valid": False, "errors": [f"YAML parse error: {e}"]}
# Validate required fields
if 'skill' not in config:
errors.append("Missing 'skill' section")
else:
if 'name' not in config['skill']:
errors.append("Missing skill.name")
if 'version' not in config['skill']:
errors.append("Missing skill.version")
# Validate settings
if 'settings' in config:
settings = config['settings']
if 'log_level' in settings:
valid_levels = ['debug', 'info', 'warn', 'error']
if settings['log_level'] not in valid_levels:
errors.append(f"Invalid log_level: {settings['log_level']}")
return {
"valid": len(errors) == 0,
"errors": errors,
"config": config if not errors else None
}
def validate_skill_structure(skill_path: str) -> dict:
"""
Validate skill directory structure.
Args:
skill_path: Path to skill directory
Returns:
dict: Structure validation result
"""
required_dirs = ['assets', 'scripts', 'references']
required_files = ['SKILL.md']
errors = []
# Check required files
for file in required_files:
if not os.path.exists(os.path.join(skill_path, file)):
errors.append(f"Missing required file: {file}")
# Check required directories
for dir in required_dirs:
dir_path = os.path.join(skill_path, dir)
if not os.path.isdir(dir_path):
errors.append(f"Missing required directory: {dir}/")
else:
# Check for real content (not just .gitkeep)
files = [f for f in os.listdir(dir_path) if f != '.gitkeep']
if not files:
errors.append(f"Directory {dir}/ has no real content")
return {
"valid": len(errors) == 0,
"errors": errors,
"skill_name": os.path.basename(skill_path)
}
def main():
"""Main validation entry point."""
skill_path = Path(__file__).parent.parent
print(f"Validating docker-production skill...")
print(f"Path: {skill_path}")
# Validate structure
structure_result = validate_skill_structure(str(skill_path))
print(f"\nStructure validation: {'PASS' if structure_result['valid'] else 'FAIL'}")
if structure_result['errors']:
for error in structure_result['errors']:
print(f" - {error}")
# Validate config
config_path = skill_path / 'assets' / 'config.yaml'
if config_path.exists():
config_result = validate_config(str(config_path))
print(f"\nConfig validation: {'PASS' if config_result['valid'] else 'FAIL'}")
if config_result['errors']:
for error in config_result['errors']:
print(f" - {error}")
else:
print("\nConfig validation: SKIPPED (no config.yaml)")
# Summary
all_valid = structure_result['valid']
print(f"\n==================================================")
print(f"Overall: {'VALID' if all_valid else 'INVALID'}")
return 0 if all_valid else 1
if __name__ == "__main__":
sys.exit(main())
Related skills
How it compares
Use as a structured checklist skill instead of asking the agent for generic “Docker best practices” in one-off prompts.
FAQ
Who is docker-production for?
Developers who deploy their own Docker images and want a repeatable production readiness review with their AI coding agent.
When should I use docker-production?
Use it in Ship before go-live to verify scans, secrets, and health checks; in Operate when setting monitoring, backups, and rollback plans for running containers.
Is docker-production safe to install?
Treat it as guidance and config templates—review the Security Audits panel on this Prism page and inspect any generated compose or secret-handling advice before applying to prod.