-
Notifications
You must be signed in to change notification settings - Fork 9
UESTC-API 现支持 Docker 化部署和手动部署两种方式
🎉 如果您在生产环境使用 UESTC-API 或仅使用 API 开发应用,推荐使用 Docker
🍭 推出 Docker 版本,旨在帮助开发者降低部署难度,同时也为 UESTC-API 在分布式部署方面作出一定的探索。如果您有任何想法,欢迎 New Issue 交流
在开始之前,UESTC-API 的启动依赖于多个环境变量:
环境变量 | 是否必须 | 说明 | 格式 |
---|---|---|---|
APP_KEY |
是 | Egg.js 应用启动 Key | 任意字符串 |
JWT_SECRET |
是 |
JWT 加密私钥 |
任意字符串 |
ALINODE_APPID ALINODE_SECRET
|
是 | 阿里云 Node.js 性能平台APPID SECRET |
请在 阿里云 Node.js 性能平台 免费注册后获取 |
Docker 部署和手动部署均需要传入以上环境变量
Docker Hub 镜像:vizards/uestc-api - Docker Hub
当前镜像自动构建依赖于
dev
分支,此分支代码可能频繁变动,如果需要在生产环境使用,建议指定版本
由于 UESTC-API 镜像的启动依赖于 MongoDB,因此推荐使用
docker-compose
同时部署 UESTC-API 和 MongoDB,并自动运行
$ git clone https://github.com/Vizards/uestc-api
修改 docker-compose.yaml
中
services:
uestc-api:
environment:
- APP_KEY=${APP_KEY}
- JWT_SECRET=${JWT_SECRET}
- ALINODE_APPID=${ALINODE_APPID}
- ALINODE_SECRET=${ALINODE_SECRET}
配置为准备阶段设置的环境变量,然后启动:
$ docker-compose up
或者您也可以在命令中传入环境变量:
$ APP_KEY=xxx JWT_SECRET=xxx ALINODE_APPID=xxx ALINODE_SECRET=xxx docker-compose up
您也可以自行编写 docker-compose.yaml
文件,由于 UESTC-API 的镜像已经发布到 Docker Hub,您的 Docker 宿主机可以只维护一个 docker-compose.yaml
文件,无需 Clone Repository
👉 docker-compose 在 Linux 上需要另行安装,参考 Install Docker Compose | Docker 中文文档
⚠️ 【安全提醒】UESTC-API 默认没有支持密码连接 MongoDB 数据库,因此在默认的docker-compose.yaml
文件中关闭了 MongoDB 镜像的外部端口以保护数据库安全,如果您需要使用,请设置密码,或做好服务器公网端口安全设置
此种部署方式需要您手动处理 UESTC-API 的 MongoDB 数据库连接
$ git clone https://github.com/Vizards/uestc-api.git
UESTC-API 的 MongoDB 数据库配置在 config/config.default.js 文件中,请注意修改后构建镜像并部署:
$ cd uestc-api/ && docker build -t vizards/uestc-api .
$ APP_KEY=xxx JWT_SECRET=xxx ALINODE_APPID=xxx ALINODE_SECRET=xxx docker run -e APP_KEY=xxx -e JWT_SECRET=xxx -e ALINODE_APPID=xxx -e ALINODE_SECRET=xxx -p 7001:7001 -d vizards/uestc-api
如果您使用默认的 docker-compose.yaml
文件进行部署,您的 UESTC-API 应用将运行在 7001 端口,访问出现项目主页即为运行成功
UESTC-API 使用的 Egg.js 框架提供了较为方便的服务端部署支持
如果您没有特殊需求,仍推荐使用 Docker 部署,以简化运维和部署流程
如果您为 MongoDB 设置了用户和密码,请参考 egg-mongoose 配置 config/config.default.js
UESTC-API 在首次运行时会新建一个名为 uestc 的数据库
$ git clone https://github.com/Vizards/uestc-api.git
或手动下载解压本项目代码
APP_KEY=xxx JWT_SECRET=xxx ALINODE_APPID=xxx ALINODE_SECRET=xxx npm start --daemon
也可以通过修改 config/config.default.js 以实现配置持久化
UESTC-API 已经取消提供公共 API 服务器,开发者需要将应用部署到自己的服务器上
https://uestc.ml 现在仅提供 11 个 Extra API 的转发服务,且不保证此服务的可用性
我们提供了方便的 Docker 化部署方案,在方便开发者实现后端数据管控的同时帮助我们应对日益严峻的教务系统 IP 封禁策略,感谢配合