关于 docker-expert
面向使用 Docker 配置 NestJS 和 Next.js 项目、管理容器化服务的开发者。内容包括 Dockerfile、Compose 配置、网络、存储、健康检查及构建实践。
主要功能
- 01创建 NestJS 和 Next.js Dockerfile
- 02配置 Docker Compose 服务
- 03设置容器网络和卷
- 04添加健康检查与重启策略
- 05采用多阶段构建实践
适用场景
- 01将 NestJS 或 Next.js 应用容器化
- 02配置开发和生产环境 Compose 文件
- 03在容器中运行 Postgres 或 Redis
- 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