执行摘要
本系统是一套完整的Docker 镜像自动化 DevOps 平台,集成了镜像自动构建、
安全漏洞扫描、私有仓库推送三大核心功能。系统采用微服务架构设计,
支持高并发、分布式部署,适用于企业级容器化研发流程的自动化管理。
核心功能模块
🏗️
Docker 镜像自动构建
从 Git 仓库克隆代码,自动解析 Dockerfile,执行镜像构建,支持多平台、多标签、构建缓存优化
🔒
安全漏洞扫描
集成 Trivy/Clair 等主流扫描器,检测 OS 包漏洞、依赖项漏洞、配置错误、敏感信息泄露
📦
私有仓库推送
支持 Harbor、Docker Registry、AWS ECR 等多种私有仓库,自动认证、批量推送、进度跟踪
Docker 镜像自动构建模块
核心能力
- ✅ Git 仓库自动克隆(支持 HTTPS/SSH 认证)
- ✅ Dockerfile 智能解析与构建
- ✅ 多平台构建支持(linux/amd64, linux/arm64)
- ✅ 构建缓存优化,加速重复构建
- ✅ 并行构建任务调度
- ✅ 构建日志实时流式输出
- ✅ 构建失败自动重试机制
支持的源代码类型
| 类型 |
描述 |
示例 |
| Git |
Git 仓库 |
https://github.com/user/repo.git |
| Local |
本地目录 |
/path/to/context |
| URL |
远程归档 |
https://example.com/context.tar.gz |
构建配置示例
{
"project_id": "proj_001",
"source": {
"type": "git",
"url": "https://github.com/example/app.git",
"branch": "main"
},
"image": {
"name": "myapp",
"tags": ["latest", "v1.0.0"],
"platform": ["linux/amd64"]
},
"options": {
"no_cache": false,
"pull_base_image": true,
"timeout_seconds": 3600,
"max_retries": 3
}
}
构建流程状态机
PENDING
▶
PREPARING
▶
BUILDING
▶
COMPLETED
安全漏洞扫描模块
扫描引擎
🔍
Trivy (默认)
Aqua Security 开源的漏洞扫描器,快速、全面、易用
🛡️
Clair
CoreOS 开发的静态分析工具,适合 CI/CD 集成
🔧
自定义扫描器
支持插件扩展,可集成 Snyk、SonarQube 等
漏洞严重性分级
| 级别 |
CVSS 评分 |
处理策略 |
标识 |
| CRITICAL |
9.0-10.0 |
默认阻断部署 |
阻断 |
| HIGH |
7.0-8.9 |
可配置阻断 |
警告 |
| MEDIUM |
4.0-6.9 |
记录 |
记录 |
| LOW |
0.1-3.9 |
记录 |
记录 |
扫描范围
- 📋 操作系统包漏洞: Alpine、Debian、Ubuntu、RHEL 等
- 📋 编程语言依赖: npm、pip、Maven、Gem、NuGet 等
- 📋 容器配置错误: Dockerfile 最佳实践检查
- 📋 敏感信息泄露: 密钥、密码、令牌检测
- 📋 许可证合规: 开源许可证审计
合规策略配置
{
"compliance_policy": {
"name": "Production Security Policy",
"severity_threshold": "HIGH",
"block_on_critical": true,
"block_on_high": false,
"allowed_cves": ["CVE-2023-XXXXX"],
"ignored_packages": ["dev-dependency-*"]
}
}
私有仓库推送模块
支持的仓库类型
| 类型 |
供应商 |
认证方式 |
| Harbor |
VMware |
Basic / Token |
| Docker Registry |
Docker Inc |
Basic |
| AWS ECR |
Amazon |
IAM |
| Azure ACR |
Microsoft |
Service Principal |
| Google GCR |
Google |
Service Account |
| Aliyun ACR |
阿里云 |
AccessKey |
推送功能
- ✅ 多标签批量推送
- ✅ 跨仓库复制
- ✅ 推送进度实时跟踪
- ✅ 签名验证(可选)
- ✅ 失败自动清理
- ✅ 速率限制控制
系统架构设计
Client Layer
Web UI / CLI / API
▼
API Gateway
FastAPI Application
▼
BuildManager
ScanManager
PushManager
▼
DockerEngine
TrivyAdapter
RegistryClient
▼
PostgreSQL
Redis
Docker Daemon
Harbor/ECR
技术分层
| 层级 |
技术选型 |
| API 框架 |
FastAPI + Uvicorn |
| 数据验证 |
Pydantic |
| 数据库 |
PostgreSQL 15 |
| 缓存 |
Redis 7 |
| 任务队列 |
Celery + Redis |
| Docker SDK |
docker-py |
| 监控 |
Prometheus + Grafana |
API 接口设计
RESTful 端点
| 资源 |
GET |
POST |
PUT |
DELETE |
/builds |
列表 |
创建 |
- |
- |
/builds/{id} |
详情 |
- |
- |
- |
/scans |
列表 |
创建 |
- |
- |
/pushes |
列表 |
创建 |
- |
- |
/registries |
列表 |
注册 |
更新 |
删除 |
API 使用示例
curl -X POST http://localhost:8000/api/v1/builds \
-H "Content-Type: application/json" \
-d '{
"project_id": "proj_001",
"source": {
"type": "git",
"url": "https://github.com/example/app.git",
"branch": "main"
},
"image": {
"name": "myapp",
"tags": ["latest", "v1.0.0"]
}
}'
{
"build_id": "build_abc123",
"status": "pending",
"message": "Build created successfully",
"estimated_duration": 300
}
部署方案
环境要求
- Python 3.11+
- Docker 20.10+
- Docker Compose 2.0+
- PostgreSQL 15+ (或使用提供的容器)
- Redis 7+ (或使用提供的容器)
- Trivy (用于安全扫描)
Docker Compose 部署
docker-compose up -d
docker-compose ps
docker-compose logs -f app
docker-compose down
服务组件
| 服务 |
端口 |
说明 |
| app |
8000 |
主应用服务 (FastAPI) |
| db |
5432 |
PostgreSQL 数据库 |
| redis |
6379 |
Redis 缓存 & 消息队列 |
| celery-worker |
- |
Celery 异步任务 worker |
| trivy |
- |
Trivy 安全扫描器 |
安全设计
认证机制
Step 1
用户登录 → 验证凭据 → 生成 JWT Token
Step 2
客户端存储 Token (localStorage/cookie)
Step 3
请求携带 Token → 中间件验证 → 授权访问
安全加固措施
🔐
HTTPS 加密
强制加密传输,防止中间人攻击
🛡️
SQL 注入防护
ORM 参数化查询,防止注入
技术栈总览
🐍
后端框架
FastAPI, Pydantic, SQLAlchemy,
Celery, Redis, Docker SDK
🗄️
数据存储
PostgreSQL 15 (主数据库)
Redis 7 (缓存 & 消息队列)
🐳
容器技术
Docker 20.10+
Docker Compose 2.0+
📊
监控运维
Prometheus (指标收集)
Grafana (可视化仪表盘)
项目文件结构
docker-auto-build/
├── src/
│ ├── config/ # 配置管理
│ │ └── settings.py
│ ├── docker_builder/ # Docker 构建模块
│ │ ├── models.py
│ │ ├── docker_engine.py
│ │ └── build_manager.py
│ ├── security_scanner/ # 安全扫描模块
│ │ ├── models.py
│ │ ├── scanner_adapter.py
│ │ ├── trivy_scanner.py
│ │ └── scan_manager.py
│ ├── registry_pusher/ # 仓库推送模块
│ │ ├── models.py
│ │ ├── registry_client.py
│ │ └── push_manager.py
│ ├── api/ # API 路由
│ │ └── routes.py
│ └── main.py # 应用入口
├── docs/ # 文档
│ ├── product_overview.md
│ └── system_architecture.md
├── tests/ # 测试用例
├── requirements.txt # Python 依赖
├── docker-compose.yml # Docker 编排
├── Dockerfile # 容器镜像
└── .env.example # 环境变量模板