Claude-skill-registry containerization

Docker and Kubernetes workflows for containerization. Use for building containers, orchestration, and cloud-native deployments.

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/containerization" ~/.claude/skills/majiayu000-claude-skill-registry-containerization && rm -rf "$T"
manifest: skills/data/containerization/SKILL.md
source content

🐳 Containerization Skill

Docker Basics

Dockerfile

# Multi-stage build
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
EXPOSE 3000
CMD ["node", "dist/index.js"]

docker-compose.yml

version: '3.8'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgres://db:5432/app
    depends_on:
      - db
  
  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_PASSWORD: secret
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

Docker Commands

# Build
docker build -t myapp:latest .

# Run
docker run -d -p 3000:3000 --name myapp myapp:latest

# Compose
docker-compose up -d
docker-compose down

# Clean up
docker system prune -a

Kubernetes Basics

Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
        - name: myapp
          image: myapp:latest
          ports:
            - containerPort: 3000
          resources:
            limits:
              memory: "256Mi"
              cpu: "500m"

Service

apiVersion: v1
kind: Service
metadata:
  name: myapp-service
spec:
  selector:
    app: myapp
  ports:
    - port: 80
      targetPort: 3000
  type: LoadBalancer

K8s Commands

# Apply configs
kubectl apply -f deployment.yaml

# Get resources
kubectl get pods
kubectl get services

# Logs & Debug
kubectl logs pod-name
kubectl exec -it pod-name -- /bin/sh

# Scale
kubectl scale deployment myapp --replicas=5

Best Practices

PracticeDescription
.dockerignoreExclude node_modules, .git
Multi-stageSmaller production images
Non-rootRun as non-root user
Health checksAdd HEALTHCHECK directive
Resource limitsSet CPU/memory limits

Checklist

  • Create Dockerfile (multi-stage)
  • Add .dockerignore
  • Set up docker-compose for dev
  • Configure health checks
  • Create K8s manifests
  • Set resource limits