| name | devops-patterns |
| version | 2.0.0 |
| description | Infrastructure, deployment, and operations patterns for Docker, Kubernetes, and CI/CD |
| sasmp_version | 1.3.0 |
| bonded_agent | 04-devops-infrastructure |
| bond_type | PRIMARY_BOND |
| atomic_design | {"single_responsibility":"Infrastructure and deployment automation","boundaries":{"includes":["docker","kubernetes","terraform","ci_cd","monitoring"],"excludes":["application_code","database_queries","security_policies"]}} |
| parameter_validation | {"schema":{"type":"object","properties":{"platform":{"type":"string","enum":["docker","kubernetes","terraform","github_actions"]},"environment":{"type":"string","enum":["development","staging","production"]},"cloud_provider":{"type":"string","enum":["aws","gcp","azure","self_hosted"]}}}} |
| retry_config | {"enabled":true,"max_attempts":3,"backoff":{"type":"exponential","initial_delay_ms":5000,"max_delay_ms":60000}} |
| logging | {"level":"INFO","fields":["platform","environment","deployment_id","duration_ms"]} |
| dependencies | {"skills":[],"agents":["04-devops-infrastructure"]} |
DevOps Patterns Skill
Purpose
Deploy and operate production-grade infrastructure with modern DevOps practices.
Docker Patterns
Multi-Stage Build (Optimized)
# Stage 1: Dependencies
FROM node:20-alpine AS deps
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production && npm cache clean --force
# Stage 2: Build
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Stage 3: Production
FROM node:20-alpine AS runner
WORKDIR /app
# Security: non-root user
RUN addgroup --system --gid 1001 nodejs && \
adduser --system --uid 1001 appuser
# Copy only necessary files
COPY --from=deps /app/node_modules ./node_modules
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/package.json ./
# Security hardening
USER appuser
EXPOSE 3000
# Health check
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1
CMD ["node", "dist/index.js"]
Docker Compose for Development
version: '3.8'
services:
api:
build:
context: .
target: builder
volumes:
- .:/app
- /app/node_modules
ports:
- "3000:3000"
environment:
- NODE_ENV=development
- DATABASE_URL=postgres://user:pass@db:5432/app
- REDIS_URL=redis://redis:6379
depends_on:
db:
condition: service_healthy
redis:
condition: service_started
db:
image:
[, ]