# 1. 克隆项目
git clone <repository-url>
cd javaweb安全教学系统
# 2. 复制环境变量文件(可选,使用默认值)
cp env.example .env
# 3. 启动服务(数据库自动初始化)
docker-compose up -d
# 4. 等待服务启动(约2-3分钟)
# 查看日志:docker-compose logs -f
# 5. 访问应用
# 前端: http://localhost:8080
# API文档: http://localhost:8080/swagger-ui.html
# 健康检查: http://localhost:8080/actuator/health- Docker 20.10+
- Docker Compose 2.0+
- 4GB+ 内存
- 20GB+ 磁盘空间
- Java: JDK 17+
- Maven: 3.6+
- Node.js: 18+
- MySQL: 8.0+
- 内存: 4GB+
# 运行自动化初始化脚本
./scripts/init-all-questions.sh
# 脚本会自动:
# - 测试数据库连接
# - 创建数据库(如果不存在)
# - 导入所有表结构和1000题数据
# - 验证导入结果REM 运行自动化初始化脚本
scripts\init-all-questions.bat
REM 脚本会自动:
REM - 测试数据库连接
REM - 创建数据库(如果不存在)
REM - 导入所有表结构和1000题数据
REM - 验证导入结果配置数据库连接(可选):
# Linux/Mac
export DB_HOST=localhost
export DB_PORT=3306
export DB_USER=root
export DB_PASSWORD=your_password
export DB_NAME=security_teaching_system
# Windows
set DB_HOST=localhost
set DB_PORT=3306
set DB_USER=root
set DB_PASSWORD=your_password
set DB_NAME=security_teaching_system详细说明请查看 本地环境数据库初始化指南
cd src/backend
# 安装依赖(首次运行)
mvn clean install -DskipTests
# 启动服务
mvn spring-boot:run
# 或使用IDE直接运行主类:
# com.javaweb.security.SecurityTeachingSystemApplication后端服务启动后:
- API地址: http://localhost:8080
- API文档: http://localhost:8080/swagger-ui.html
- 健康检查: http://localhost:8080/actuator/health
cd src/frontend
# 安装依赖(首次运行)
npm install
# 启动开发服务器(推荐,开发时使用)
npm run dev前端服务启动后:
- 开发地址: http://localhost:3000
- 支持热重载、源码映射等开发特性
- 适合日常开发和调试
npm run preview只是预览构建后的静态文件,不连接后端API- 不能进行实际的登录、数据操作等功能
- 仅用于测试构建结果,不能正常使用系统功能
# 检查题目总数(应该显示1000题)
mysql -u root -p security_teaching_system -e "SELECT COUNT(*) as total_questions FROM vulnerability_questions;"
# 检查各分类题目数量(每个分类应该显示100题)
mysql -u root -p security_teaching_system -e "SELECT category_code, COUNT(*) as count FROM vulnerability_questions GROUP BY category_code ORDER BY category_code;"项目使用以下默认配置,无需修改即可启动:
-
数据库:
- 数据库名:
security_teaching_system - 用户名:
security_user - 密码:
security_pass - 端口:
3306
- 数据库名:
-
应用:
- 端口:
8080 - JWT密钥:
change-me-in-production
- 端口:
如需自定义配置,编辑 .env 文件:
# 复制示例文件
cp env.example .env
# 编辑配置
vim .env # 或使用其他编辑器docker-compose ps应该看到两个服务:
security-teaching-mysql- 数据库服务security-teaching-app- 应用服务
# 进入MySQL容器
docker-compose exec mysql mysql -u security_user -psecurity_pass security_teaching_system
# 检查表数量
SHOW TABLES;
# 检查题目数量(应该显示1000题,A01-A10各100题)
SELECT COUNT(*) as total_questions FROM vulnerability_questions;
SELECT category_code, COUNT(*) as count FROM vulnerability_questions GROUP BY category_code ORDER BY category_code;
# 如果题目数量不对,检查MySQL初始化日志
# docker-compose logs mysql | grep -i error
# 退出
exit# 健康检查
curl http://localhost:8080/actuator/health
# 应该返回:{"status":"UP"}错误:Bind for 0.0.0.0:8080 failed: port is already allocated
解决:
# 修改.env文件中的端口
APP_PORT=8081
# 或停止占用端口的服务错误:数据库连接失败或表不存在
解决:
# 1. 删除旧数据卷
docker-compose down -v
# 2. 重新启动
docker-compose up -d
# 3. 查看MySQL日志
docker-compose logs mysql错误:容器启动失败或OOM
解决:
# 修改.env文件,减少JVM内存
JAVA_OPTS=-Xms256m -Xmx512m错误:Docker构建超时或失败
解决:
# 1. 清理Docker缓存
docker system prune -a
# 2. 使用国内镜像源(可选)
# 配置Docker镜像加速器
# 3. 重新构建
docker-compose build --no-cache如需开发环境,使用:
docker-compose -f docker-compose.dev.yml up -d开发环境特点:
- 前后端分离运行
- 支持热重载
- 支持远程调试(后端端口5005)