关于 docker-development
用于分析 Dockerfile 和 docker-compose 配置,检查安全、优化及配置问题,适合审查容器构建和服务设置的开发者与团队。提供独立分析工具及适用于 CI 的 JSON 输出。
主要功能
- 01检查 Dockerfile 安全与最佳实践
- 02分析层、缓存和构建阶段
- 03验证 Compose 结构与依赖
- 04检查端口、卷和网络
- 05为 CI 输出 JSON
适用场景
- 01上线前审查 Dockerfile
- 02查找明文密钥或 root 用户风险
- 03验证 Compose 依赖和端口
- 04在 CI 中运行容器检查
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ borghei/ claude-skills --skill docker-development安装后在 Claude Code 中输入/docker-development确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
examples/docker-compose.sample.ymlDockerfile.samplereferences/docker-best-practices.mdscripts/compose_validator.pydockerfile_analyzer.py详细介绍
Docker 开发
类别: 工程 领域: 容器开发与优化
概述
Docker 开发技能可自动分析 Dockerfile 和 docker-compose 配置。它可以识别层优化机会、安全问题、最佳实践违规,以及 Compose 服务配置错误。使用此技能可在团队中贯彻容器标准,并在问题进入生产环境之前发现它们。
请先确认
运行分析之前,请确认以下输入。如果有任何一项未知或含糊不清,请先询问——不要自行假设:
- 目标文件 — 要分析哪个 Dockerfile 或 docker-compose.yml(决定设置
--file的值以及运行哪个工具) - 关注重点 — 执行完整分析还是仅进行安全分析,以及是否检查端口冲突(决定设置
--security-only/--check-ports的值) - 输出模式 — 面向人的可读输出还是用于 CI 的 JSON(决定设置
--format json的值,以及是否让发现的问题阻止流水线)
停止规则:只询问对输出影响最大的 2-3 项。如果用户说“直接起草”,则继续操作,并在产物顶部列出你的假设。
快速开始
# Analyze a Dockerfile for best practices
python scripts/dockerfile_analyzer.py --file Dockerfile
# Analyze with JSON output
python scripts/dockerfile_analyzer.py --file Dockerfile --format json
# Validate a docker-compose file
python scripts/compose_validator.py --file docker-compose.yml
# Check for port conflicts across compose files
python scripts/compose_validator.py --file docker-compose.yml --check-ports
工具概览
dockerfile_analyzer.py
分析 Dockerfile 中的最佳实践、安全问题和优化机会。
| 功能 | 说明 |
|---|---|
| 层优化 | 检测不必要的层,并建议合并 RUN 语句 |
| 多阶段分析 | 验证多阶段构建模式和最终镜像大小 |
| 安全扫描 | 标记以 root 身份运行、使用 latest 标签以及暴露的机密信息 |
| 基础镜像检查 | 建议使用更小的基础镜像(alpine、distroless、slim) |
| 缓存优化 | 识别会破坏 Docker 缓存的不佳层顺序 |
# Full analysis
python scripts/dockerfile_analyzer.py --file Dockerfile
# Security-focused scan
python scripts/dockerfile_analyzer.py --file Dockerfile --security-only
# JSON output for CI integration
python scripts/dockerfile_analyzer.py --file Dockerfile --format json
compose_validator.py
验证 docker-compose 文件的正确性、依赖问题和端口冲突。
| 功能 | 说明 |
|---|---|
| 架构验证 | 检查 Compose 文件结构和语法 |
| 依赖关系图 | 验证 depends_on 链是否存在循环依赖 |
| 端口冲突检测 | 识别重复的主机端口绑定 |
| 卷挂载检查 | 验证卷路径和挂载配置 |
| 网络分析 | 检查网络定义和服务连通性 |
# Full validation
python scripts/compose_validator.py --file docker-compose.yml
# Check port conflicts only
python scripts/compose_validator.py --file docker-compose.yml --check-ports
# JSON output
python scripts/compose_validator.py --file docker-compose.yml --format json
工作流
Dockerfile 审查工作流
- 分析 - 对目标 Dockerfile 运行 dockerfile_analyzer.py
- 审查发现的问题 - 优先解决严重安全问题(root 用户、机密信息)
- 优化层 - 合并 RUN 语句并重新排序,以提高缓存效率
- 验证基础镜像 - 尽可能切换到精简基础镜像
- 重新分析 - 确认改进并验证没有回归问题
Compose 验证工作流
- 验证结构 - 运行 compose_validator.py 检查语法和架构
- 检查依赖 - 检查服务依赖关系图,确认没有循环引用
- 审计端口 - 确保各服务之间没有主机端口冲突
- 审查卷 - 确认卷挂载正确且必要
- 审查网络 - 验证服务隔离和连通性
CI 集成工作流
# Example GitHub Actions step
- name: Docker Lint
run: |
python scripts/dockerfile_analyzer.py --file Dockerfile --format json > results.json
python scripts/compose_validator.py --file docker-compose.yml --format json >> results.json
参考文档
- Docker 最佳实践 - Dockerfile 和 Compose 模式的综合指南
常见模式速查
| 模式 | 推荐 | 不推荐 |
|---|---|---|
| 基础镜像 | FROM python:3.12-slim | FROM python:latest |
| 用户 | USER appuser | 以 root 身份运行 |
| 合并层 | RUN apt-get update && apt-get install -y pkg | 更新和安装分别使用 RUN |
| COPY 顺序 | 先复制 requirements,再复制代码 | 一次性复制所有内容 |
| 多阶段构建 | 使用构建阶段 + 精简的运行时 | 使用包含构建工具的单阶段 |
| 密钥 | 使用构建密钥或运行时环境变量 | COPY .env . 或 ENV SECRET=value |
| 健康检查 | HEALTHCHECK CMD curl -f http://localhost/ | 未定义健康检查 |
| .dockerignore | 包含 node_modules、.git 等 | 没有 .dockerignore 文件 |
Compose 模式
| 模式 | 推荐 | 不推荐 |
|---|---|---|
| 重启策略 | restart: unless-stopped | 未设置重启策略 |
| 资源限制 | 设置 deploy.resources.limits | 不限制资源 |
| 命名卷 | volumes: [db-data:/var/lib/postgresql] | 匿名卷 |
| 网络 | 显式定义网络 | 仅使用默认 bridge |
| 环境变量 | env_file: .env | 在 compose 中内联密钥 |
评论
支持 Markdown