一键导入
containerization
Docker 多阶段构建、镜像优化、Distroless 基础镜像、安全扫描(Trivy)、Docker Compose 编排。适用于应用容器化、镜像瘦身、供应链安全加固场景。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Docker 多阶段构建、镜像优化、Distroless 基础镜像、安全扫描(Trivy)、Docker Compose 编排。适用于应用容器化、镜像瘦身、供应链安全加固场景。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
设计 API 认证鉴权和权限矩阵时使用。适用于多角色系统、租户隔离、字段级权限。优先使用 OAuth 2.0 / JWT + RBAC + 资源归属检查。
设计具体 API 端点时使用。适用于资源建模后的下一步、列端点清单、HTTP 方法和状态码选择。优先使用 RFC 7231 HTTP 语义 + GitHub REST 命名规范。
设计 API 错误码和错误结构时使用。适用于错误响应规范、调用方错误处理、调试可观测。优先使用 RFC 7807 Problem Details + 业务错误码 + 调用方处理建议。
设计幂等接口和重试策略时使用。适用于支付、扣减、订单、关键写操作。优先使用 Idempotency-Key + 业务去重键 + 并发冲突处理(ETag/版本号)。
输出 OpenAPI 契约和 Mock 服务时使用。适用于 API 设计的最后一步、给前端/后端/QA 的交付。优先使用 OpenAPI 3.1 + Mock 数据覆盖所有路径 + 详细的下游交接清单。
设计列表接口的分页、筛选、排序、搜索时使用。适用于所有列表 API。优先使用 cursor 分页(大数据)或 offset 分页(小数据)+ 统一筛选/排序规范。
| name | containerization |
| description | Docker 多阶段构建、镜像优化、Distroless 基础镜像、安全扫描(Trivy)、Docker Compose 编排。适用于应用容器化、镜像瘦身、供应链安全加固场景。 |
参考来源:Docker 官方文档、Google Distroless 项目、Trivy 文档、CNCF 容器安全白皮书、Chainguard Images。
1. 最小化攻击面
使用 Distroless / Alpine / scratch
不安装调试工具到生产镜像
2. 多阶段构建
编译阶段 → 运行阶段
只复制产物,不复制源码
3. 层缓存优先
依赖安装在前,源码复制在后
利用 BuildKit 缓存挂载
4. 非 root 运行
USER 指令指定非特权用户
文件权限最小化
5. 可复现构建
锁定基础镜像 digest
锁定依赖版本
6. 扫描前置
CI 中构建后立即扫描
阻断 HIGH/CRITICAL 漏洞
7. 标签规范
语义化版本 + git SHA
不依赖 :latest
1. 分析应用依赖
- 运行时需要哪些系统库
- 编译时需要哪些工具链
- 区分 devDependencies vs dependencies
2. 选择基础镜像
- 编译阶段:官方 SDK 镜像(node:20, golang:1.22, python:3.12)
- 运行阶段:distroless / alpine / scratch
- 锁定 digest(sha256:xxx)
3. 编写多阶段 Dockerfile
- Stage 1: 安装依赖
- Stage 2: 编译 / 构建
- Stage 3: 仅复制产物到最小运行时
4. 优化层缓存
- COPY package.json → RUN npm ci → COPY src/
- 使用 --mount=type=cache 加速
5. 安全加固
- 添加 .dockerignore
- USER nonroot
- HEALTHCHECK 指令
- 不暴露不必要端口
6. 本地验证
- docker build --target=production
- docker compose up(集成测试)
- dive 分析层
7. 安全扫描
- trivy image <image>:<tag>
- 阻断 HIGH/CRITICAL
- 生成 SBOM
8. 推送与签名
- docker push → registry
- cosign sign(可选)
- 记录 digest
| 策略 | 效果 | 适用场景 |
|---|---|---|
| 多阶段构建 | 减少 50-90% | 所有项目 |
| Distroless | 减少 70%+ | Go / Java / Node |
| Alpine 基础 | 减少 60% | 需要 shell 调试 |
| .dockerignore | 减少构建上下文 | 所有项目 |
| --mount=type=cache | 加速构建 | 依赖多的项目 |
| 合并 RUN 指令 | 减少层数 | 多 apt-get 场景 |
| scratch | 最小(<10MB) | 静态编译 Go |
# docker-compose.yml 结构
services:
app:
build:
context: .
dockerfile: Dockerfile
target: production
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgres://db:5432/app
depends_on:
db:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 10s
timeout: 5s
retries: 3
db:
image: postgres:16-alpine
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
volumes:
pgdata:
□ 使用多阶段构建
□ 运行阶段基于 Distroless / Alpine / scratch
□ 基础镜像锁定 digest 或具体版本
□ 非 root 用户运行
□ .dockerignore 排除无关文件
□ 依赖安装层在源码复制层之前(缓存友好)
□ 无 secrets 硬编码在镜像中
□ HEALTHCHECK 已配置
□ Trivy 扫描无 HIGH/CRITICAL
□ 镜像大小合理(<200MB 应用层)
□ 多架构构建(如需)
□ docker compose 可一键启动本地环境
□ 标签使用语义化版本 + SHA
templates/dockerfile-template.md — 多阶段 Dockerfile + .dockerignore + Compose 模板上游:
backend-engineer → 应用代码 + 依赖清单
frontend-engineer → 静态产物构建
下游:
ci-cd-pipeline → 镜像构建阶段
kubernetes-orchestration → 镜像部署
secrets-config → 运行时 secrets 注入
monitoring-alerting → 健康检查端点