From workflow-skills
Docker and Docker Compose reference patterns for local development, container security, networking, volume strategies, and multi-service orchestration. Complements docker-compose-setup (scaffolding) with best-practice reference.
npx claudepluginhub arosenkranz/claude-code-config --plugin workflow-skillsThis skill uses the workspace's default tool permissions.
Reference guide for Docker and Docker Compose best practices. Use alongside `/docker-compose-setup` for scaffolding.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Designs, implements, and audits WCAG 2.2 AA accessible UIs for Web (ARIA/HTML5), iOS (SwiftUI traits), and Android (Compose semantics). Audits code for compliance gaps.
Reference guide for Docker and Docker Compose best practices. Use alongside /docker-compose-setup for scaffolding.
# Stage: dependencies
FROM node:22-alpine AS deps
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
# Stage: dev (hot reload)
FROM node:22-alpine AS dev
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
EXPOSE 3000
CMD ["npm", "run", "dev"]
# Stage: production (minimal image)
FROM node:22-alpine AS production
WORKDIR /app
RUN addgroup -g 1001 -S appgroup && adduser -S appuser -u 1001
USER appuser
COPY --from=build --chown=appuser:appgroup /app/dist ./dist
COPY --from=build --chown=appuser:appgroup /app/node_modules ./node_modules
ENV NODE_ENV=production
EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=3s CMD wget -qO- http://localhost:3000/health || exit 1
CMD ["node", "dist/server.js"]
Services in the same Compose network resolve by service name:
postgres://postgres:postgres@db:5432/app_dev
redis://redis:6379/0
services:
frontend:
networks: [frontend-net]
api:
networks: [frontend-net, backend-net]
db:
networks: [backend-net] # Only reachable from api
volumes:
- .:/app # Bind mount for hot reload
- /app/node_modules # Protect container deps from host
- pgdata:/var/lib/postgresql/data # Named volume for persistence
docker compose up # Auto-loads override (dev)
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d # Production
:latest)security_opt: [no-new-privileges:true]read_only: true with tmpfs for writable dirscap_drop: [ALL], add back only what's needed.env files or Docker secrets127.0.0.1 only when not needed on networklinux/arm64 (check Docker Hub tags)deploy.resources.limits.memory: 256Mplatform: linux/arm64 in compose to catch mismatches earlydocker compose logs -f app # Follow logs
docker compose exec app sh # Shell in
docker compose exec db psql -U postgres
docker compose ps # Running services
docker stats # Resource usage
docker compose down -v # Stop + remove volumes (DESTRUCTIVE)
docker system prune # Clean unused images