sg-exam:从克隆到跑通的在线考试平台完整部署教程

📅 2026/8/22 14:06:22
sg-exam:从克隆到跑通的在线考试平台完整部署教程
sg-exam从克隆到跑通的在线考试平台完整部署教程【免费下载链接】sg-exam基于Spring Boot搭建的新一代教学管理平台提供权限管理、考试、问卷、练习等功能项目地址: https://gitcode.com/gh_mirrors/sg/sg-examsg-exam 是一个基于 Spring Boot 与 Vue 构建的教学管理平台提供课程、在线考试、题库、问卷与成绩管理支持单选、多选、判断、简答及音视频题型自带多租户与权限体系。本文带你完成一次完整部署环境检查、克隆代码、本地或 Docker 两种方式启动并解读最常改的几个配置项。sg-exam 能做什么从课程到成绩的一体化考试平台一句话定位它把「建课程 → 出题组卷 → 在线考试 → 阅卷出分」串成了一条完整链路并配套了三个前端Web 前端frontend/sg-exam-web学员端在线考试、课程学习、个性化练习H5 客户端frontend/sg-exam-mobile移动端精简版专注考试参与后台管理系统frontend/sg-exam-admin管理端课程、考试、题库、成绩全链条管理外加单位、用户、角色、菜单等系统配置。它适合谁想搭一套内部培训考核系统、题库练习平台或问卷系统的团队也适合学习 Spring Boot 多模块工程 Vue 前后端分离架构的开发者。启动前先备好必选 4 项、可选 2 项依赖版本必选/可选说明JDK17必选后端编译与运行均要求 17Dockerfile 安装的是java-17-openjdkbuild.gradle 指定VERSION_17Gradle用自带 wrapper必选无需单独安装直接用仓库根目录的./gradlewNode.js yarn仓库未提供请查看 frontend/sg-exam-admin/package.json 确认必选构建前端时只部署后端接口可不装Redis任意主流版本必选dev 配置默认连本机127.0.0.1:6379docker-compose.yml 已内嵌redis:latestMySQL5.7.27可选仅 docker 配置需要dev 配置走 H2 文件库docker-compose.yml 已内嵌MinIO任意版本可选默认的附件/图片存储docker-compose.yml 已内嵌Docker Compose任意较新版本容器化部署时必选本地开发模式可不用一个容易踩的坑sg-exam-mobile构建时注入了NODE_OPTIONS--openssl-legacy-provider见 setup.sh如果你单独构建 H5 端也要带上这个环境变量仓库未提供对 Node 的具体版本要求请查看 frontend/sg-exam-mobile/package.json 确认。三步完成首次启动第一步克隆仓库git clone https://gitcode.com/gh_mirrors/sg/sg-exam你应看到进入目录后sg-api、sg-common、sg-user-service、sg-exam-service等后端模块frontend/下三个前端以及存放部署配置的config-repo/都在。第二步构建后端只构建一个可执行产物在仓库根目录执行./gradlew build -x test你应看到sg-user-service/build/libs/目录下生成可执行 jar——Dockerfile 打包镜像时取的就是这个路径。前端用一条脚本构建三个站内部对各端执行yarn build./setup.sh -build_f你应看到frontend/sg-exam-web/dist、frontend/sg-exam-admin/dist、frontend/sg-exam-mobile/dist三个目录生成。第三步启动二选一方式 A本地开发模式H2 内存库免装 MySQLjava -jar sg-user-service/build/libs/sg-user-service-0.0.15.jar \ --spring.profiles.activedev \ --spring.config.additional-locationfile:./config-repo/application.yml,file:./config-repo/sg-user-service.yml这条命令的含义激活dev配置用 H2 文件库替代 MySQL并把 config-repo/ 下的两份 YAML 纳入 Spring 配置——与 sg-exam.env 中SPRING_CONFIG_LOCATION的写法一致。你应看到服务在8080 端口启动上下文路径是/sg-user-service数据库自动初始化自 config-repo/h2/schema-h2.sqlH2 控制台开在/h2数据落在本地data/h2/目录。方式 BDocker 一键部署MySQL Redis MinIO 应用全套前端构建完成后执行./setup.sh -build它完成「后端构建 打sg-exam:latest镜像」然后再启动./setup.sh -start你应看到docker ps里出现mysql-service、redis-service、minio-service、sg-exam四个容器。MySQL 首次启动会自动执行 config-repo/mysql/init.sql 建库建表。部署前最常改的 5 个配置项以下配置项都集中在 config-repo/sg-user-service.yml 和 config-repo/sg-exam.env 两个文件里。1. 配置文件切换spring.profiles.activesg-user-service.yml里有多段 profiledev段用 H2 文件库docker段用 MySQL。改它等于切换数据库改错会出现「连库失败」或「表不存在」。2. MySQL / Redis 连接SG_DB_USER_HOST、SG_REDIS_USER_HOSTenv 文件容器网络内默认值是服务名mysql-service/redis-service。如果换成外部数据库把这两个值改成对应 IP同时改SG_DB_USER_PASSWORD默认123456对应 compose 里的MYSQL_ROOT_PASSWORD。不改它、却换了库的位置启动时数据源连接会被拒绝。3.MINIO_ACCESS_DOMAINenv 文件这是前端访问附件的地址官方注释明确写了「比较重要」部署到服务器后要改成「服务器 IP 或域名 端口」且不能以斜杠结尾。不改它页面上的课程图片、附件下载会 404。4.ATTACH_DEFAULT_STORAGE_TYPEenv 文件2 MinIO1 七牛云。换成 1 就必须同时填QINIU_*一组配置否则附件上传失败。5. 端口server.port与 docker 端口映射后端默认 8080、路径前缀/sg-user-serviceDocker 部署时应用容器同时映射 80nginx 出前端和 8080后端。宿主机端口被占用时改 docker-compose.yml 中sg-exam服务的- 80:80一行即可例如改成- 8081:80。 另外sg-exam.env 里的JAVA_OPTS默认-Xmx512m生产环境请按机器内存上调。部署成功长什么样验证与排错验证服务是否可用后端浏览器访问http://localhost:8080/sg-user-service能收到接口响应即代表 Java 服务活着前端Docker 模式访问http://localhostnginx 默认出 Web 学员端MinIO 控制台Docker 模式http://localhost:9090账号admin/admin123456见 docker-compose.yml能登录说明存储就绪容器状态docker ps四个容器均为Up。常见问题速答启动报数据库连接失败90% 是 env 文件里的 host 写成了127.0.0.1。Docker 网络内必须用mysql-service/redis-service服务名。页面图片、附件加载 404改MINIO_ACCESS_DOMAIN为实际访问地址注意去掉结尾斜杠。80 端口冲突按上文改 docker-compose 端口映射并同步调整MINIO_ACCESS_DOMAIN的端口部分。本地开发想清空数据重来dev 模式数据在data/h2/目录每次启动会重新执行 schema 脚本具体行为以 sg-user-service.yml 的sql.init段为准。跑通之后继续深入这几处启动入口sg-user-service/src/main/java/com/github/tangyi/UserServiceApplication.java表结构与业务含义docs/数据库设计文档.md、config-repo/mysql/init.sql版本演进记录CHANGELOG.md。【免费下载链接】sg-exam基于Spring Boot搭建的新一代教学管理平台提供权限管理、考试、问卷、练习等功能项目地址: https://gitcode.com/gh_mirrors/sg/sg-exam创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考