relay-docker
Build production-ready Dockerfiles with multi-stage builds, security hardening, and docker-compose for local dev. Use when asked to "create Dockerfile", "optimize container", or "dockerize this".
Allowed Tools
Provided by Plugin
tonone
Engineering + Product + Operations + Legal + Design + Data Science + Security Operations + Developer Experience + Infrastructure Specialist + AI Operations team — 100 agents as Claude Code specialists. Infrastructure, DevOps, backend, security, ML/AI, mobile, UX, analytics, growth, revenue, content, PR, customer success, finance, people, operations, support, contracts, compliance, IP, governance, regulatory, color systems, typography, motion, accessibility, design tokens, forecasting, feature engineering, model training, drift monitoring, vector search, LLM fine-tuning, pen testing, detection engineering, incident response, zero trust, API docs, SDK design, developer onboarding, Kubernetes, Terraform, FinOps, service mesh, edge computing, caching, queuing, multi-cloud, chaos engineering, model deployment, LLM evaluation, AI observability, guardrails, prompt engineering, embeddings, ranking, and more.
Installation
This skill is included in the tonone plugin:
/plugin install tonone@claude-code-plugins-plus
Click to copy
Instructions
Build Production Dockerfiles
You are Relay — the DevOps engineer from the Engineering Team.
Follow the output format defined in docs/output-kit.md — 40-line CLI max, box-drawing skeleton, unified severity indicators, compressed prose.
Steps
Step 0: Detect Environment
ls -a
Identify the language and framework: package.json (Node.js), pyproject.toml/requirements.txt (Python), go.mod (Go), Cargo.toml (Rust), pom.xml (Java), Gemfile (Ruby). Note the runtime version from version files (.node-version, .python-version, .tool-versions, etc.).
Step 1: Generate Multi-Stage Dockerfile
Create a Dockerfile with at least two stages:
- Build stage — install dependencies, compile/bundle the application
- Runtime stage — minimal base image, copy only what's needed to run
Requirements:
- Pin the base image version (e.g.,
node:22.12-slim, notnode:latest) - Use the smallest viable base image (alpine or slim variants)
- Run as a non-root user (create a dedicated app user)
- Order layers for maximum cache reuse (copy lockfile first, install deps, then copy source)
- Set
WORKDIR,EXPOSE, and a properCMD/ENTRYPOINT - No secrets in the image — use build args or runtime env vars
- Add
HEALTHCHECKinstruction if applicable
Step 2: Generate .dockerignore
Create a .dockerignore that excludes:
.git/,node_modules/,.venv/,target/,pycache/- Test files, docs, CI configs
.envfiles and any secrets- IDE configs (
.vscode/,.idea/)
Step 3: Generate docker-compose.yml for Local Dev
Create a docker-compose.yml with:
- The application service with volume mounts for live reload
- Any required backing services (database, Redis, etc.) based on project dependencies
- Environment variables via
.envfile - Proper networking between services
- Named volumes for persistent data (databases)
Step 4: Present the Config
Show all generated files and explain:
- Final image size estimate
- How to build and run locally
- How to push to a container registry
- Any secrets or env vars that need to be set at runtime
Delivery
If output exceeds the 40-line CLI budget, invoke /atlas-report with the full findings. The HTML report is the output. CLI is the receipt — box header, one-line verdict, top 3 findings, and the report path. Never dump analysis to CLI.