# MySQL 查询练习网站 一个面向新手/一般/进阶的 MySQL 查询练习网站: - 登录注册 - 首次引导(填姓名/选模块/经验/选择模拟库或导入库) - 题库分级、在线运行 SQL、判题与进度保存 - 支持模拟数据库(内置电商库/人事库)与导入自定义数据库(上传初始化 SQL) ## 运行方式(本地开发) ### 1) 启动 MySQL(Docker) 在项目根目录执行: ```bash docker compose up -d ``` 默认连接信息: - Host: `127.0.0.1` - Port: `3306` - User: `root` - Password: `root` ### 2) 启动后端(Go + Gin) 打开一个终端: ```bash cd api go run . ``` 后端默认端口:`http://localhost:8080` 可选环境变量: - `PORT`(默认 `8080`) - `JWT_SECRET`(默认 `dev-secret`) - `SQLITE_PATH`(默认 `./data/app.db`) - `MYSQL_HOST` `MYSQL_PORT` `MYSQL_USER` `MYSQL_PASSWORD` ### 3) 启动前端(Vite + Vue3) 打开另一个终端: ```bash pnpm install pnpm run dev ``` 前端会通过 Vite 代理把 `/api` 转发到 `http://localhost:8080`。 ## 部署说明(生产) 当前仓库支持: - 前端+后端+MySQL 用 Docker Compose 部署到一台服务器(或任意支持 Docker 的环境) ### 1) 前端+后端+MySQL(Docker Compose) 在服务器上: ```bash docker compose -f docker-compose.prod.yml up -d ``` 默认会把前端暴露到 `http://<你的服务器>/`。 前端容器内置 Nginx: - 静态资源由 Nginx 提供 - `/api/*` 会反向代理到后端容器 `api:8080`,因此生产环境无需单独配置 `VITE_API_BASE_URL` 安全默认:生产 compose 默认不对外暴露后端 `8080` 端口(只允许通过前端 Nginx 访问)。你可以用 `http://<你的服务器>/health` 检查后端健康。 ### 2) 可选:前端单独部署 如果你希望把前端放到 CDN/其他静态站点,也可以通过环境变量 `VITE_API_BASE_URL` 指向后端。 ## 常用命令 - `pnpm run check`:TypeScript 类型检查 - `pnpm run lint`:ESLint 检查 - `cd api && go test ./...`:后端单元测试