Skip to content
Vizards edited this page Mar 4, 2019 · 2 revisions

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 部署

Docker Hub 镜像:vizards/uestc-api - Docker Hub

当前镜像自动构建依赖于 dev 分支,此分支代码可能频繁变动,如果需要在生产环境使用,建议指定版本

安装 Docker

Docker 社区版 | Docker 中国

docker-compose 部署

由于 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 镜像的外部端口以保护数据库安全,如果您需要使用,请设置密码,或做好服务器公网端口安全设置

Docker 单独部署

此种部署方式需要您手动处理 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 部署,以简化运维和部署流程

1. 安装 MongoDB

如果您为 MongoDB 设置了用户和密码,请参考 egg-mongoose 配置 config/config.default.js

UESTC-API 在首次运行时会新建一个名为 uestc 的数据库

2. 下载 UESTC-API

$ git clone https://github.com/Vizards/uestc-api.git

或手动下载解压本项目代码

3. 配置环境变量并运行

APP_KEY=xxx JWT_SECRET=xxx ALINODE_APPID=xxx ALINODE_SECRET=xxx npm start --daemon

也可以通过修改 config/config.default.js 以实现配置持久化