# 中医学习平台-后端 **Repository Path**: graduation-project-2025/tcm-api ## Basic Information - **Project Name**: 中医学习平台-后端 - **Description**: 毕业设计-中医学习平台-后端 - **Primary Language**: NodeJS - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-05 - **Last Updated**: 2026-07-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # tcmApi 基于 `Express + TypeScript + Prisma + MySQL` 的后端服务,当前优先按本地联调方式使用,并预留生产部署与 MinIO 配置。 ## 当前约定 - 本地开发端口:`6066` - 当前联调地址:`http://127.0.0.1:6066` - 未来线上 API 域名:`https://tcmapi.tcmxs.top` - 线上前端域名:`https://tcmapi.tcmxs.top` - 生产 MinIO 公开地址:`https://tcmapi.tcmxs.top/minio` ## 目录 - `src/` 应用源码 - `prisma/schema.prisma` Prisma schema - `scripts/test-api.js` 基础接口烟测脚本 - `.env.example` 开发环境变量模板 - `.env.production.example` 生产环境变量模板 - `docker-compose.yml` 本地容器编排 - `docker-compose.prod.yml` 生产容器编排 ## 本地启动 ### 1. 安装依赖 ```bash npm install ``` ### 2. 配置环境变量 复制 `.env.example` 为 `.env`,至少补齐这些变量: - `DATABASE_URL` - `JWT_SECRET` - `JWT_REFRESH_SECRET` - `ADMIN_JWT_SECRET` - `ADMIN_INIT_USERNAME` - `ADMIN_INIT_PASSWORD` - `WECHAT_APP_ID` - `WECHAT_APP_SECRET` - `MINIO_ACCESS_KEY` - `MINIO_SECRET_KEY` - `MINIO_PUBLIC_BASE_URL` 说明: - 默认服务端口是 `6066` - 未设置 `DATABASE_URL` 时,会回退读取 `DB_HOST/DB_PORT/DB_USER/DB_PASSWORD/DB_NAME` - Prisma CLI 直接读取 `.env`,本地执行 `prisma` 命令时必须保证 `DATABASE_URL` 可用 - 如果 API 跑在 Docker 内,容器内访问 MinIO 应使用服务名 `minio`,不要写 `localhost` ### 3. Prisma 首次启动或修改 `prisma/schema.prisma` 后执行: ```bash npx prisma generate ``` 如果你只是兼容已有数据库表结构,优先使用: ```bash npx prisma db pull ``` 如果后续真的改表结构,再执行: ```bash npx prisma migrate dev ``` ### 4. 本地运行 ```bash npm run dev ``` ### 5. 构建与基础验证 ```bash npm run build npm run test:api ``` ## 健康检查 - `GET /health/live` - `GET /health/ready` - `GET /health` 本地默认地址: - `http://127.0.0.1:6066` ## Docker ### 本地 ```bash docker compose up -d --build ``` 默认端口: - API: `127.0.0.1:6066` - MinIO: `127.0.0.1:9100` - MinIO Console: `127.0.0.1:9101` ### 生产预留 ```bash docker compose -f docker-compose.prod.yml --env-file .env.production up -d --build ``` 说明: - 打包后的 zip 会包含项目中的 `.env.production`,用于部署时加载生产配置 - 上线前请确认 `.env.production` 中的生产配置已填写正确;该文件包含敏感信息,不应公开分发 - Docker 镜像构建阶段只会执行 `npm run build`,不会触发 Windows 打包脚本 生产配置当前保留这些约定: - API 域名:`https://tcmapi.tcmxs.top` - 前端域名:`https://tcmapi.tcmxs.top` - MinIO 对外地址:`https://tcmapi.tcmxs.top/minio` ### 宝塔 Docker 如果你准备部署到宝塔 Docker / Compose,直接使用: - `docker-compose.prod.yml` - `.env.production.example` 打包命令: ```powershell npm run release:baota ``` ## Nginx 反代示例 ```nginx server { listen 443 ssl http2; server_name tcmapi.tcmxs.top; location / { proxy_pass http://127.0.0.1:6066; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /minio/ { proxy_pass http://127.0.0.1:9100/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` ## 常用检查 ```bash npx prisma validate npm run build node scripts/test-api.js docker compose config ```