DVWA项目Docker Compose部署指南
2025-07-06 05:00:00作者:冯爽妲Honey
概述
DVWA(Damn Vulnerable Web Application)是一个专为安全测试人员设计的Web应用程序,包含多种常见的安全问题,用于学习和实践Web安全技术。本文将详细解析DVWA项目的Docker Compose部署配置,帮助安全研究人员和开发人员快速搭建测试环境。
环境准备
在开始部署前,请确保系统已安装以下组件:
- Docker引擎
- Docker Compose工具
配置解析
网络配置
networks:
dvwa:
此配置定义了一个名为dvwa
的Docker网络,用于容器间通信。DVWA应用和数据库将通过这个网络进行连接,确保服务间的隔离性和安全性。
数据卷配置
volumes:
dvwa:
定义了一个名为dvwa
的数据卷,用于持久化存储MariaDB数据库的数据。这样即使容器重启,数据库内容也不会丢失。
服务配置
DVWA应用服务
dvwa:
build: .
image: ghcr.io/digininja/dvwa:latest
pull_policy: always
environment:
- DB_SERVER=db
depends_on:
- db
networks:
- dvwa
ports:
- 127.0.0.1:4280:80
restart: unless-stopped
关键配置说明:
build: .
- 使用当前目录下的Dockerfile构建镜像image
- 指定官方镜像源pull_policy: always
- 总是拉取最新镜像environment
- 设置环境变量,指定数据库服务器为db
服务ports
- 将容器80端口映射到主机的4280端口,且仅绑定到本地回环地址(127.0.0.1),增强安全性restart: unless-stopped
- 容器意外退出时自动重启
数据库服务
db:
image: docker.io/library/mariadb:10
environment:
- MYSQL_ROOT_PASSWORD=dvwa
- MYSQL_DATABASE=dvwa
- MYSQL_USER=dvwa
- MYSQL_PASSWORD=p@ssw0rd
volumes:
- dvwa:/var/lib/mysql
networks:
- dvwa
restart: unless-stopped
关键配置说明:
- 使用MariaDB 10版本的官方镜像
- 环境变量配置了:
- 根用户密码
- 创建的数据库名称
- 应用使用的用户名和密码
- 数据卷挂载确保数据库持久化
- 同样配置了自动重启策略
部署步骤
- 将上述配置保存为
docker-compose.yml
文件 - 在终端中导航到文件所在目录
- 执行命令:
docker-compose up -d
- 等待容器启动完成后,访问
http://localhost:4280
安全建议
- 修改默认凭证:部署后应立即修改数据库和应用的管理员密码
- 网络隔离:考虑将DVWA部署在隔离的网络环境中,避免影响生产系统
- 访问限制:配置只允许特定IP访问管理界面
- 定期更新:保持Docker镜像为最新版本,解决已知问题
常见问题解决
- 端口冲突:如果4280端口被占用,可修改
ports
配置中的主机端口号 - 数据库连接失败:检查
db
服务是否正常启动,确认环境变量配置正确 - 持久化问题:确保数据卷权限设置正确,避免数据库写入失败
总结
通过Docker Compose部署DVWA环境,可以快速搭建一个包含完整问题演示环境的Web应用,极大方便了安全研究和教学工作的开展。本文详细解析了部署配置的各个部分,帮助用户理解每个配置项的作用,并能根据实际需求进行调整。