mcpField
C
configure-container

configure-container

github.com/laurigates云与 DevOps5951 次安装1 天前更新
代码仓库

关于 configure-container

用于检查和配置项目容器基础设施的技能,面向维护容器标准的开发团队。它覆盖 Dockerfile、构建工作流、镜像扫描与安全加固,并支持仅检查或自动修复。

主要功能

  1. 01检查 Dockerfile 与构建工作流
  2. 02核查多阶段构建和非 root 用户
  3. 03检查镜像标签与 .dockerignore
  4. 04配置 Trivy 或 Grype 扫描
  5. 05检查多平台构建与缓存
  6. 06支持检查模式和自动修复

适用场景

  1. 01审计容器基础设施合规性
  2. 02检查容器构建流水线
  3. 03在 CI 中加入漏洞扫描
  4. 04修复容器配置中的标准问题

安装

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

$npx skills add https://github.com/laurigates/claude-plugins --skill configure-container

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

附带文件REFERENCE.md

详细介绍

/configure:container

根据项目标准检查并配置全面的容器基础设施,重点关注最小化镜像、非 root 用户和安全加固。

适用场景

在以下场景使用此技能……在以下场景采用其他方式……
审核容器基础设施是否合规(Dockerfile、工作流、扫描)从头编写 Dockerfile(/configure:dockerfile)
检查多阶段构建、非 root 用户和安全加固配置 Kubernetes 部署(/configure:skaffold)
设置支持 GHCR 和多平台的容器构建工作流对已构建的镜像运行漏洞扫描(直接使用 Trivy CLI)
验证 .dockerignore、OCI 标签和基础镜像版本为 VS Code 配置 devcontainer 功能
在 CI 流水线中添加 Trivy/Grype 扫描调试容器运行时问题(system-debugging agent)

上下文

  • Dockerfile:!find . -maxdepth 2 \( -name 'Dockerfile' -o -name 'Dockerfile.*' -o -name '*.Dockerfile' \)
  • Docker ignore:!find . -maxdepth 1 -name '.dockerignore'
  • 容器工作流:!find .github/workflows -maxdepth 1 \( -name '*container*' -o -name '*docker*' -o -name '*build*' \)
  • Devcontainer:!find .devcontainer -maxdepth 1 -name 'devcontainer.json'
  • Skaffold:!find . -maxdepth 1 -name 'skaffold.yaml'
  • 包文件:!find . -maxdepth 1 \( -name 'package.json' -o -name 'pyproject.toml' -o -name 'Cargo.toml' -o -name 'go.mod' \)
  • 项目标准:!find . -maxdepth 1 -name '.project-standards.yaml'

参数

从命令参数中解析:

  • --check-only:报告合规状态,不做修改(CI/CD 模式)
  • --fix:自动应用修复,无需提示
  • --component <name>:仅检查指定组件(dockerfile、workflow、registry、scanning、devcontainer)

安全理念

最小化攻击面:镜像越小,漏洞越少。Node.js 使用 Alpine(约 5 MB),Python 使用 slim(约 50 MB)。

默认使用非 root 用户:所有容器都必须以非 root 用户运行。

必须采用多阶段构建:分离构建和运行环境。构建工具和开发依赖不得包含在生产镜像中。

执行

执行此容器基础设施合规性检查:

步骤 1:检测容器相关文件

搜索 Dockerfile、工作流文件、devcontainer 配置和 .dockerignore。根据包文件检测项目类型(frontend、python、go、rust、infrastructure)。

步骤 2:查询最新基础镜像版本

在标记镜像版本过时之前,使用 WebSearch 或 WebFetch 验证当前版本:

  1. Node.js Alpine 镜像:在 Docker Hub 上检查最新的 LTS Alpine 标签
  2. Python slim 镜像:在 Docker Hub 上检查最新的 slim 标签
  3. nginx Alpine:在 Docker Hub 上检查最新的 Alpine 标签
  4. GitHub Actions:在发布页面上检查最新的 action 版本
  5. Trivy:检查 aquasecurity/trivy-action 的发布版本
第 3 步:分析各个组件

根据标准检查各个组件:

Dockerfile 标准:

检查项标准严重级别
是否存在容器化项目必需缺失则 FAIL
多阶段构建必需(构建阶段 + 运行阶段)缺失则 FAIL
HEALTHCHECKK8s 探针必需缺失则 FAIL
非 root 用户必需(不可选)缺失则 FAIL
.dockerignore必需缺失则 WARN
.dockerignore Dockerfile*使用 glob 从上下文中排除所有 Dockerfile 变体仅有 Dockerfile 则 WARN
基础镜像版本最新稳定版(检查 Docker Hub)版本过旧则 WARN
精简基础镜像Node 使用 Alpine,Python 使用 slim镜像臃肿则 WARN

基础镜像标准(报告前请确认最新版本):

语言构建镜像运行镜像目标大小
Node.jsnode:24-alpine(LTS)nginx:1.27-alpine< 50MB
Pythonpython:3.13-slimpython:3.13-slim< 150MB
Gogolang:1.23-alpinescratch 或 alpine:3.21< 20MB
Rustrust:1.84-alpinealpine:3.21< 20MB

安全加固标准:

检查项标准严重级别
非 root USER必需(创建专用用户)缺失则 FAIL
只读文件系统--read-only 或 RO 注解缺失则 INFO
禁止提权--security-opt=no-new-privileges缺失则 INFO
丢弃 capabilities--cap-drop=all + 显式 --cap-add缺失则 INFO
镜像中不得包含机密不得使用包含敏感数据的 ENV发现则 FAIL

构建工作流标准:

检查项标准严重级别
工作流是否存在container-build.yml 或类似文件缺失则 FAIL
checkout actionv4+版本较旧则 WARN
build-push-actionv6+版本较旧则 WARN
多平台linux/amd64,linux/arm64缺失则 WARN
构建缓存启用 GHA 缓存缺失则 WARN
安全扫描工作流中使用 Trivy/Grype缺失则 WARN
id-token: write配置 provenance/SBOM 时必需缺失则 WARN
缓存范围多镜像构建时显式设置 scope=缺失则 WARN
扫描器固定版本Trivy/Grype action 通过 SHA 固定版本(而非 @master)未固定则 WARN

容器标签标准(GHCR 集成):

检查项标准严重级别
org.opencontainers.image.source必需——链接到仓库缺失则 WARN
org.opencontainers.image.description必需——软件包描述缺失则 WARN
org.opencontainers.image.licenses必需——SPDX 许可证缺失则 WARN

如需详细检查 Dockerfile,请运行 /configure:dockerfile。

第 4 步:生成合规报告

打印格式化的合规报告:

Container Infrastructure Compliance Report
==============================================
Project Type: frontend (detected)

Component Status:
  Dockerfile              PASS
  Build Workflow          PASS
  Registry Config         PASS
  Container Scanning      WARN (missing)
  Devcontainer           SKIP (not required)
  .dockerignore          PASS

Dockerfile Checks:
  Multi-stage             2 stages          PASS
  HEALTHCHECK             Present           PASS
  Base images             node:22, nginx    PASS

Build Workflow Checks:
  Workflow                container-build.yml PASS
  checkout                v4                PASS
  build-push-action       v6                PASS
  Multi-platform          amd64,arm64       PASS
  GHA caching             Enabled           PASS

Container Labels Checks:
  image.source            In metadata-action PASS
  image.description       Custom label set  PASS
  image.licenses          Not configured    WARN

Recommendations:
  - Add org.opencontainers.image.licenses label to workflow
  - Add Trivy or Grype vulnerability scanning to CI

Overall: 2 warnings, 1 info

如果使用 --check-only,请在此处停止。

第 5 步:应用修复(如果使用 --fix 或用户确认)
  1. 缺少 Dockerfile:运行 /configure:dockerfile --fix
  2. 缺少构建工作流:根据 REFERENCE.md 中的模板创建
  3. 缺少扫描:添加 Trivy 扫描作业
  4. 缺少 .dockerignore:根据 REFERENCE.md 创建标准 .dockerignore
  5. 操作版本过旧:更新版本号
第 6 步:更新标准跟踪

更新 .project-standards.yaml:

components:
  container: "2025.1"
  dockerfile: "2025.1"
  container-workflow: "2025.1"

有关详细模板(Dockerfile、工作流、devcontainer、.dockerignore),请参阅 REFERENCE.md。

Agentic 优化

上下文命令
快速合规性检查/configure:container --check-only
自动修复所有问题/configure:container --fix
仅检查 Dockerfile/configure:container --check-only --component dockerfile
仅检查工作流/configure:container --check-only --component workflow
仅检查扫描/configure:container --fix --component scanning
查找所有 Dockerfilefind . -maxdepth 2 \( -name 'Dockerfile' -o -name 'Dockerfile.*' \) 2>/dev/null

标志

标志描述
--check-only报告状态,不提供修复建议
--fix自动应用修复
--component <name>仅检查指定组件(dockerfile、workflow、registry、scanning、devcontainer)

组件依赖

Container Infrastructure
├── Dockerfile (required)
│   └── .dockerignore (recommended)
├── Build Workflow (required for CI/CD)
│   ├── Registry config
│   └── Multi-platform builds
├── Container Scanning (recommended)
│   └── SBOM generation (optional)
└── Devcontainer (optional)
    └── VS Code extensions

注意事项

  • 多平台构建:对 M1/M2 Mac 开发者和 ARM 服务器至关重要
  • GHCR:对于托管在 GitHub 上的项目,首选 GitHub Container Registry
  • Trivy:推荐用于全面检测漏洞的扫描器
  • Alpine 与 Slim:Node.js/Go/Rust 使用 Alpine。Python 使用 slim(Debian)(存在 musl 兼容性问题)
  • 必须使用非 root 用户:生产环境中绝不要以 root 身份运行容器
  • 固定版本:始终使用具体的版本标签,绝不要使用 latest

另请参阅

  • /configure:dockerfile - Dockerfile 专属配置
  • /configure:workflows - GitHub Actions 工作流配置
  • /configure:skaffold - Kubernetes 开发配置
  • /configure:security - 安全扫描配置
  • /configure:all - 运行所有合规性检查
  • container-development 技能 - 容器最佳实践
  • ci-workflows 技能 - CI/CD 工作流模式

评论

支持 Markdown