mcpField
D
docker-expert

docker-expert

github.com/shipshitdev云与 DevOps38208 次安装今天更新
代码仓库

关于 docker-expert

面向使用 Docker 配置 NestJS 和 Next.js 项目、管理容器化服务的开发者。内容包括 Dockerfile、Compose 配置、网络、存储、健康检查及构建实践。

主要功能

  1. 01创建 NestJS 和 Next.js Dockerfile
  2. 02配置 Docker Compose 服务
  3. 03设置容器网络和卷
  4. 04添加健康检查与重启策略
  5. 05采用多阶段构建实践

适用场景

  1. 01将 NestJS 或 Next.js 应用容器化
  2. 02配置开发和生产环境 Compose 文件
  3. 03在容器中运行 Postgres 或 Redis
  4. 04通过缓存优化镜像构建

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/shipshitdev/skills --skill docker-expert

安装后在 Claude Code 中输入/docker-expert确认已加载。

附带文件plugin.json

详细介绍

Docker 专家

适用场景

  • 为 NestJS/Next.js 创建 Dockerfile
  • 配置 docker-compose
  • 容器网络和卷
  • 优化多阶段构建
  • 健康检查和重启策略
  • 配置 Postgres/Redis 容器

Dockerfile 最佳实践

NestJS 多阶段构建
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 模式

开发环境配置
  • 使用卷实现实时重载
  • 挂载源代码
  • 设置 restart: unless-stopped
  • 配置网络
生产环境配置
  • 使用命名卷进行持久化
  • 设置重启策略
  • 配置健康检查
  • 使用机密管理
使用 Docker Compose 配置 Postgres
services:
  postgres:
    image: postgres:17
    container_name: postgres
    restart: unless-stopped
    ports:
      - "127.0.0.1:5432:5432"
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - app-network
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  postgres_data:

健康检查

healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost:3001/health"]
  interval: 30s
  timeout: 10s
  retries: 3
  start_period: 40s

最佳实践

  • 使用多阶段构建来减小镜像体积
  • 利用层缓存
  • 使用 .dockerignore
  • 设置适当的重启策略
  • 对容器进行健康检查
  • 挂载卷以持久化数据
  • 使用网络隔离服务

评论

支持 Markdown