DefectDojo项目Docker部署与开发环境搭建指南
前言
DefectDojo是一个开源的安全问题管理平台,采用Django框架开发。本文将详细介绍如何使用Docker Compose来部署和开发DefectDojo项目,涵盖从基础部署到高级开发调试的完整流程。
环境准备
系统要求
- Docker版本要求至少19.03.0
- Docker Compose版本要求至少1.28.0
- 如果处于企业代理环境下,需要配置Docker代理设置
版本检查
使用以下命令检查当前Docker环境版本:
docker version
docker compose version
如果版本低于要求,需要先升级Docker环境。
基础部署
镜像构建
DefectDojo需要多个Docker镜像协同工作,主要包括:
- Django服务镜像(defectdojo-django)
- Nginx服务镜像(defectdojo-nginx)
建议先构建本地镜像以确保代码一致性:
docker compose build
也可以单独构建某个服务镜像:
docker compose build uwsgi # 构建Django服务
docker compose build nginx # 构建Nginx服务
启动服务
生产环境建议使用release模式:
docker/setEnv.sh release
docker compose up
开发环境建议使用dev模式,支持代码热更新:
docker/setEnv.sh dev
docker compose build
docker compose up
访问应用
服务启动后,可以通过以下方式访问:
- 浏览器访问:http://localhost:8080
- 初始管理员账号:admin
- 获取初始密码:
docker compose logs initializer | grep "Admin password:"
如需修改密码:
docker compose exec -it uwsgi ./manage.py changepassword admin
开发环境配置
热重载机制
开发模式下,系统配置了以下热重载功能:
- UWSGI容器:通过
--py-autoreload 1
参数实现Python代码热更新 - Nginx容器:静态资源修改后只需浏览器强制刷新(Ctrl+F5)
- CeleryWorker容器:暂不支持热更新,需手动重启:
docker compose restart celeryworker
权限问题处理
如果遇到挂载卷权限问题,可以修改Dockerfile.django中的USER设置,匹配本地用户ID:
USER your_user_id # 替换为实际用户ID
获取用户ID命令:
id -u
远程调试配置
可以使用debugpy进行远程调试,配置方法参考Django调试文档。
高级配置
HTTPS支持
DefectDojo支持HTTPS部署,有两种方式:
-
使用自有证书:
- 将私钥和证书放入nginx目录
- 配置nginx_TLS.conf
- 设置GENERATE_TLS_CERTIFICATE=False
- 保护私钥权限:
chmod 400 nginx/*.key
-
自动生成证书:
rm -f docker-compose.override.yml ln -s docker-compose.override.https.yml docker-compose.override.yml docker compose up
默认HTTPS端口为8443,可通过修改nginx.conf和docker-compose.override.https.yml调整。
版本控制
可以指定特定版本构建和运行:
export NGINX_VERSION=x.y.z
export DJANGO_VERSION=x.y.z
docker compose build
数据库初始化控制
禁用数据库初始化(保留现有数据):
export DD_INITIALIZE=false
测试执行
单元测试
运行所有单元测试:
docker/setEnv.sh unit_tests
docker compose up
运行特定测试用例:
docker exec -it uwsgi /bin/bash
python manage.py test unittests.tools.test_dependency_check_parser --keepdb
集成测试
运行所有集成测试:
docker/setEnv.sh integration_tests
docker compose up
查看测试日志:
docker compose logs -f integration-tests
日志与调试
日志级别
- release模式:INFO级别
- 其他模式:DEBUG级别
可通过修改settings.dist.py或创建local_settings.py调整日志级别,例如:
LOGGING['loggers']['dojo.specific-loggers.deduplication']['level'] = 'DEBUG'
调试工具栏
可以启用Django Debug Toolbar,用于调试SQL查询等开发信息。
清理环境
停止并移除所有容器:
docker compose down
彻底清理(包括网络和数据库卷):
docker compose down --volumes
结语
本文详细介绍了DefectDojo项目的Docker部署和开发环境搭建方法,涵盖了从基础部署到高级调试的完整流程。通过合理使用这些配置,可以显著提高DefectDojo的开发效率和部署灵活性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考