reNgine项目Docker Compose部署架构深度解析
2025-07-07 02:30:02作者:余洋婵Anita
项目概述
reNgine是一个基于Docker容器化部署的网络安全扫描与自动化渗透测试平台。该项目采用微服务架构设计,通过Docker Compose编排多个服务组件,包括Web应用、数据库、消息队列、任务调度等核心模块。本文将深入解析其Docker Compose配置架构,帮助安全研究人员和DevOps工程师理解其部署逻辑。
核心服务组件
1. 数据库服务 (PostgreSQL)
db:
image: "postgres:12.3-alpine"
environment:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_PORT=${POSTGRES_PORT}
volumes:
- postgres_data:/var/lib/postgresql/data/
- 采用轻量级PostgreSQL 12.3 Alpine镜像
- 数据持久化通过命名卷postgres_data实现
- 关键配置通过环境变量注入,增强安全性
- 仅绑定到本地回环地址(127.0.0.1),限制外部访问
2. 缓存与消息队列 (Redis)
redis:
image: "redis:alpine"
hostname: redis
- 使用官方Redis Alpine镜像
- 固定主机名为redis,便于其他服务通过服务发现访问
- 作为Celery任务队列的消息代理和结果后端
3. 异步任务处理 (Celery Worker)
celery:
build: ./web
entrypoint: /usr/src/app/celery-entrypoint.sh
volumes:
- ./web:/usr/src/app
- github_repos:/usr/src/github
- wordlist:/usr/src/wordlist
- scan_results:/usr/src/scan_results
- 基于Web服务镜像构建
- 挂载多个专用卷用于存储扫描结果、字典文件等
- 支持动态伸缩(autoscale),根据配置调整并发工作进程数
- 依赖PostgreSQL和Redis服务
4. 定时任务调度 (Celery Beat)
celery-beat:
build: ./web
command: celery -A reNgine beat -l INFO --scheduler django_celery_beat.schedulers:DatabaseScheduler
- 使用数据库作为调度器后端,确保任务调度持久化
- 与Worker共享相同的代码基础和依赖
- 支持分布式环境下的定时任务协调
5. Web应用服务
web:
build: ./web
entrypoint: /usr/src/app/entrypoint.sh
ports:
- "127.0.0.1:8000:8000"
- 基于Django框架构建的Web界面
- 仅暴露8000端口给本地网络
- 通过Nginx反向代理对外提供服务
- 包含静态文件服务和管理员初始化功能
6. 反向代理 (Nginx)
proxy:
image: nginx:alpine
ports:
- 8082:8082/tcp
- 443:443/tcp
secrets:
- source: proxy.ca
target: /etc/nginx/certs/rengine_chain.pem
- 提供HTTPS终止和静态文件服务
- 使用Docker Secrets管理SSL证书
- 自定义Nginx配置通过卷挂载注入
- 同时暴露8082(HTTP)和443(HTTPS)端口
7. 大模型服务 (Ollama)
ollama:
image: ollama/ollama
ports:
- "11434:11434"
- 提供本地大模型推理能力
- 暴露11434端口供其他组件调用
- 数据持久化通过ollama_data卷实现
网络架构设计
networks:
rengine_network:
- 创建专用桥接网络rengine_network
- 所有服务加入同一网络,实现服务间通信隔离
- Web服务设置别名rengine,便于内部DNS解析
数据持久化方案
volumes:
tool_config:
postgres_data:
gf_patterns:
nuclei_templates:
github_repos:
wordlist:
scan_results:
static_volume:
ollama_data:
- 每种数据类型使用独立命名卷
- 关键数据包括:
- PostgreSQL数据库文件
- 扫描工具配置(GF模式、Nuclei模板等)
- GitHub仓库缓存
- 字典文件(wordlist)
- 扫描结果数据
- 静态资源文件
- 大模型数据
安全特性
- 证书管理:通过Docker Secrets安全存储和分发SSL证书
- 网络隔离:服务间通信限制在专用网络内
- 最小权限:数据库服务仅监听本地接口
- 配置分离:敏感信息通过环境变量注入
部署建议
- 准备环境变量文件(.env),包含所有必要的配置参数
- 确保证书文件放置在./secrets/certs/目录下
- 根据硬件资源调整Celery Worker的并发参数
- 生产环境应考虑:
- 启用HTTPS强制跳转
- 配置定期备份策略
- 监控服务健康状态
总结
reNgine的Docker Compose架构展示了现代安全工具的典型部署模式,通过容器化技术实现了:
- 服务组件解耦
- 资源隔离与安全控制
- 弹性伸缩能力
- 便捷的部署与维护
这种架构既适合本地研发环境,也能扩展到生产部署,为安全团队提供了灵活可靠的自动化扫描平台基础。