"Docker containerization reference — multi-stage builds, Compose configs, image optimization, and container security for Yarn 4 monorepos. Use when: (1) creating or optimizing Dockerfiles, (2) configuring docker-compose for dev or production, (3) reducing image size with multi-stage builds, (4) hardening container security, or (5) setting up health checks and resource limits."
Resources
1Install
npx skillscat add jgamaraalv/ts-dev-kit/docker Install via the SkillsCat registry.
SKILL.md
Docker — Containerization for Monorepos
Docker best practices for Node.js monorepos with Yarn 4 Berry.
When to Load References
| Need | Reference file |
|---|---|
| Writing or reviewing a Dockerfile for the monorepo | references/monorepo-dockerfile.md |
| Configuring docker-compose for dev or production | references/compose-configs.md |
Key Principles
- Minimal images: Alpine-based, only runtime dependencies in final stage
- Layer caching order: system deps → package manifests → install → source → build
- Non-root users: Create
appuser, never run as root in production - One process per container: Compose multiple containers, not multiple processes
- Health checks on every service: Use the existing
/healthendpoint
Image Optimization Quick Reference
- Use
node:22-alpineas base - Multi-stage builds: exclude build tools from final image
yarn cache cleanafter install.dockerignore: exclude.git,node_modules,*.md,.env*,.claude,__tests__,coverage,.turbo--productionflag for runtime dependencies only- Pin base image versions (not just
latest)
Container Security Quick Reference
- Run as non-root user (
addgroup --system app && adduser --system --ingroup app app) - Don't store secrets in images — use env vars or secrets management
- Scan images:
docker scout cves <image> - Set resource limits in compose:
mem_limit,cpus - Read-only filesystem where possible:
read_only: true - Drop capabilities:
cap_drop: [ALL]
Useful Commands
docker compose build api # Build specific service
docker compose up -d # Start all services
docker compose logs -f api # Follow logs
docker compose exec api sh # Shell into container
docker images | grep myapp # Check image sizes
docker system df # View cache usage
docker system prune -a # Prune unused images
docker stats # Resource usage