Expert in Docker, docker-compose, Dockerfile patterns, and container orchestration for NestJS and Next.js applications. Use this skill when users need Docker setup, containerization, or docker-compose configuration.
Resources
1Install
npx skillscat add shipshitdev/library/docker-expert Install via the SkillsCat registry.
This skill provides expertise in Dockerfile creation, docker-compose configuration, and container orchestration specifically for NestJS and Next.js applications. It solves complexities related to multi-stage builds, container networking, and microservice infrastructure setup. Use this skill when you need to containerize web applications or configure persistent storage and networking for databases like MongoDB and Redis.
Docker Expert
Overview
This skill enables AI assistants to help with Docker containerization, docker-compose setups, and container orchestration for micro startup infrastructure.
When to Use This Skill
This skill activates when users need:
- Dockerfile creation for NestJS/Next.js
- docker-compose configuration
- Container networking and volumes
- Multi-stage builds optimization
- Health checks and restart policies
- MongoDB/Redis container setup
Dockerfile Best Practices
NestJS Multi-Stage Build
FROM node:20-alpine AS base
WORKDIR /app
FROM base AS deps
COPY package*.json ./
RUN npm ci
FROM base AS builder
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build
FROM base AS runner
ENV NODE_ENV=production
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
EXPOSE 3001
CMD ["node", "dist/main.js"]Next.js Dockerfile
FROM node:20-alpine AS base
WORKDIR /app
FROM base AS deps
COPY package*.json ./
RUN npm ci
FROM base AS builder
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build
FROM base AS runner
ENV NODE_ENV=production
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/public ./public
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./package.json
EXPOSE 3000
CMD ["npm", "start"]Docker Compose Patterns
Development Setup
- Use volumes for live reload
- Mount source code
- Set restart: unless-stopped
- Configure networks
Production Setup
- Use named volumes for persistence
- Set restart policies
- Configure health checks
- Use secrets management
MongoDB with Docker Compose
services:
mongodb:
image: mongo:7.0
container_name: mongodb
restart: unless-stopped
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_ROOT_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_ROOT_PASSWORD}
volumes:
- mongodb_data:/data/db
networks:
- app-network
command: mongod --authHealth Checks
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3001/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40sBest Practices
- Use multi-stage builds to reduce image size
- Leverage layer caching
- Use .dockerignore
- Set appropriate restart policies
- Use health checks for containers
- Mount volumes for persistent data
- Use networks for service isolation