Merge branch 'test'

pull/635/head
bigfengyu 5 years ago
commit 1f62e1f767

@ -0,0 +1,19 @@
# See https://help.github.com/ignore-files/ for more about ignoring files.
# dependencies
/node_modules
# testing
/coverage
# misc
.DS_Store
.env
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# css
src/**/*.css
build
build.zip

@ -1,5 +1,37 @@
FROM node:8.11.1-alpine # BUILDING
FROM node:lts-alpine AS builder
# base on work of llitfkitfk@gmail.com
LABEL maintainer="chibing.fy@alibaba-inc.com"
WORKDIR /app
# cache dependencies
COPY package.json ./
# 在国内打开下面一行加速
#RUN npm config set registry https://registry.npm.taobao.org/
# instal dependencies
RUN npm install typescript -g && \
npm install
# build
COPY . ./
RUN npm run build
# RUNNING
FROM node:lts-alpine
# base on work of llitfkitfk@gmail.com
LABEL maintainer="chibing.fy@alibaba-inc.com"
# use China mirror of: https://github.com/jgm/pandoc/releases/download/2.7.3/pandoc-2.7.3-linux.tar.gz
RUN wget http://q08gwzg9o.bkt.clouddn.com/pandoc-2.7.3-linux.tar.gz && \
tar -xf pandoc-2.7.3-linux.tar.gz && \
cp pandoc-2.7.3/bin/* /usr/bin/ && \
pandoc -v && \
rm -rf pandoc-2.7.3-linux.tar.gz pandoc-2.7.3
WORKDIR /app WORKDIR /app
ADD . /tmp COPY --from=builder /app/dist .
RUN /bin/sh -c 'cd /tmp && npm install && npm install -g typescript && npm run build && mv ./dist/* /app/ && mv ./node_modules /app/ && rm -rf /tmp' COPY --from=builder /app/node_modules ./node_modules

@ -1,34 +1,88 @@
# RAP2-DELOS 开源社区版本 (后端API服务器) # RAP2-DELOS 开源社区版本 (后端 API 服务器)
[![Build Status](https://travis-ci.org/thx/rap2-delos.svg?branch=master)](https://travis-ci.org/thx/rap2-delos) [![Build Status](https://travis-ci.org/thx/rap2-delos.svg?branch=master)](https://travis-ci.org/thx/rap2-delos)
RAP2 包含两个组件(对应两个Github Repository)。 RAP2 是在 RAP1 基础上重做的新项目它能给你提供方便的接口文档管理、Mock、导出等功能包含两个组件(对应两个 Github Repository)。
* rap2-delos: 后端数据API服务器基于Koa + MySQL[link](http://github.com/thx/rap2-delos) - rap2-delos: 后端数据 API 服务器,基于 Koa + MySQL[link](http://github.com/thx/rap2-delos)
* rap2-dolores: 前端静态资源基于React [link](http://github.com/thx/rap2-dolores) - rap2-dolores: 前端静态资源,基于 React [link](http://github.com/thx/rap2-dolores)
**Rap 官方服务站点,无需安装直接体验: [rap2.taobao.org](http://rap2.taobao.org)**
**有急事来官方钉钉群,响应更迅速: 11789704**
***2019-10-31现已支持 Docker 一键部署,欢迎大家体验&反馈***
***2019-09-27更新的用户请注意按照下面指引安装 pandoc 以启用文档导出功能*** ***2019-09-27更新的用户请注意按照下面指引安装 pandoc 以启用文档导出功能***
### Resources
* [Official Site 官网: rap2.taobao.org](http://rap2.taobao.org) ## 推荐使用 Docker 快速部署
* 钉钉群ID: 11789704
* [热心网友提供的部署文档,供参考](https://github.com/thx/rap2-delos/issues/119) ### 安装 Docker
国内用户可参考 [https://get.daocloud.io/](https://get.daocloud.io/) 安装 Docker 以及 Docker Compose (Linux 用户需要单独安装),建议按照链接指引配置 Docker Hub 的国内镜像提高加载速度。
### 配置项目
在任意地方建立目录 rap
## 部署 把本仓库中的 [docker-compose.yml](https://raw.githubusercontent.com/thx/rap2-delos/master/docker-compose.yml) 放到 rap 目录中
Rap 前端服务的端口号默认为 3000你可以在 docker-compose.yml 中按照注释自定义
在 rap 目录下执行下面的命令:
```sh
# 拉取镜像并启动
docker-compose up -d
# 启动后第一次运行需要手动初始化mysql数据库
# ⚠️注意: 只有第一次该这样做
docker-compose exec delos node scripts/init
# 部署成功后 访问
http://localhost:3000 # 前端(可自定义端口号)
http://localhost:38080 # 后端
# 如果访问不了可能是数据库没有链接上,关闭 rap 服务
docker-compose down
# 再重新运行
docker-compose up -d
```
**⚠️注意:第一次运行后 rap 目录下会被自动创建一个 docker 目录,里面存有 rap 的数据库数据,可千万不要删除。**
#### 镜像升级
Rap 经常会进行 bugfix 和功能升级,用 Docker 可以很方便地跟随主项目升级
```sh
# 拉取一下最新的镜像
docker-compose pull
# 暂停当前应用
docker-compose down
# 重新构建并启动
docker-compose up -d --build
# 清空不被使用的虚悬镜像
docker image prune -f
```
## 手动部署
### 环境要求 ### 环境要求
* Node.js 8.9.4+
* MySQL 5.7+ - Node.js 8.9.4+
* Redis 4.0+ - MySQL 5.7+
* pandoc 2.73 (供文档生成使用) - Redis 4.0+
- pandoc 2.73 (供文档生成使用)
### 开发模式 ### 开发模式
#### 安装MySQL和Redis服务器 #### 安装 MySQL Redis 服务器
请自行查找搭建方法mysql/redis配置在config.*.ts文件中在不修改任何配置的情况下 请自行查找搭建方法mysql/redis 配置在 config.\*.ts 文件中,在不修改任何配置的情况下,
redis会通过默认端口 + 本机即可正常访问确保redis-server打开即可。 redis 会通过默认端口 + 本机即可正常访问,确保 redis-server 打开即可。
注意:修改 cofig 文件后需要重新 `npm run build` 才能生效 注意:修改 cofig 文件后需要重新 `npm run build` 才能生效
@ -46,7 +100,7 @@ redis会通过默认端口 + 本机即可正常访问确保redis-server打开
redis-server redis-server
``` ```
后台执行可以使用nohup或pm2这里推荐使用pm2下面命令会安装pm2并通过pm2来启动redis缓存服务 后台执行可以使用 nohup pm2这里推荐使用 pm2下面命令会安装 pm2并通过 pm2 来启动 redis 缓存服务
```bash ```bash
npm install -g pm2 npm install -g pm2
@ -65,9 +119,9 @@ mysql -e 'CREATE DATABASE IF NOT EXISTS RAP2_DELOS_APP DEFAULT CHARSET utf8 COLL
npm install npm install
``` ```
confirm configurations in /config/config.dev.js (used in development mode),确认/config/config.dev.js中的配置(.dev.js后缀表示用于开发模式)。 confirm configurations in /config/config.dev.js (used in development mode),确认/config/config.dev.js 中的配置(.dev.js 后缀表示用于开发模式)。
#### 安装 && TypeScript编译 #### 安装 && TypeScript 编译
```bash ```bash
npm install -g typescript npm install -g typescript
@ -80,12 +134,14 @@ npm run build
npm run create-db npm run create-db
``` ```
#### 执行mocha测试用例和js代码规范检查 #### 执行 mocha 测试用例和 js 代码规范检查
```bash ```bash
npm run check npm run check
``` ```
#### 启动开发模式的服务器 监视并在发生代码变更时自动重启 #### 启动开发模式的服务器 监视并在发生代码变更时自动重启
```bash ```bash
npm run dev npm run dev
``` ```
@ -99,44 +155,26 @@ npm start
``` ```
## Dockerfile (本地源码通过docker运行
```sh
# 1. 安装docker
# 2. 修改docker-compose.xml中的配置。默认使用mysql和redis的镜像。可修改为自己的配置
# 3. 通过源码运行。
docker-compose up -d
# 4. 第一次运行需要手动初始化mysql数据库。分别执行以下命令
docker exec -it rap2-delos sh
// 登录成功以后执行:
node scripts/init
// 执行完毕后退出
exit
// 如果仍然有问题,重新启动
docker-compose down
// 重新运行
docker-compose up -d
```
## Author ## Author
* 版权: 阿里妈妈前端团队
* 作者: - 版权: 阿里妈妈前端团队
* RAP2 2017/10前版本作者为[墨智(@Nuysoft)](https://github.com/nuysoft/), [mockjs](mockjs.com)的作者。 - 作者:
* 2017/10之后版本开发者 - RAP2 2017/10 前版本作者为[墨智(@Nuysoft)](https://github.com/nuysoft/), [mockjs](mockjs.com)的作者。
* [霍雍(Bosn)](https://github.com/bosn/)[RAP1](https://github.com/thx/RAP)作者RAP最早的创始人。 - 2017/10 之后版本开发者
* [承虎(alvarto)](https://github.com/alvarto/) - [霍雍(Bosn)](http://github.com/bosn/)[RAP1](http://github.com/thx/RAP)作者RAP 最早的创始人。
* [池冰(bigfengyu)](https://github.com/bigfengyu) - [承虎(alvarto)](http://github.com/alvarto/)
- [池冰(bigfengyu)](https://github.com/bigfengyu)
### Tech Arch ### Tech Arch
* 前端架构(rap2-dolores) - 前端架构(rap2-dolores)
* React / Redux / Saga / Router - React / Redux / Saga / Router
* Mock.js - Mock.js
* SASS / Bootstrap 4 beta - SASS / Bootstrap 4 beta
* server: nginx - server: nginx
* 后端架构(rap2-delos) - 后端架构(rap2-delos)
* Koa - Koa
* Sequelize - Sequelize
* MySQL - MySQL
* Server - Server
* server: node - server: node

@ -1,54 +1,55 @@
# mail@dongguochao.com # mail@dongguochao.com
# llitfkitfk@gmail.com
# chibing.fy@alibaba-inc.com
version: '2.2' version: "3"
services: services:
# frontend
dolores:
image: rapteam/rap2-dolores:latest
ports:
#冒号前可以自定义前端端口号,冒号后不要动
- 3000:38081
# backend
delos: delos:
container_name: rap2-delos image: rapteam/rap2-delos:latest
# build from ./Dockerfile ports:
# build: . # 这里的配置不要改哦
# build from images - 38080:38080
image: blackdog1987/rap2-delos:2.6.aa3be03
environment: environment:
- SERVE_PORT=38080
# if you have your own mysql, config it here, and disable the 'mysql' config blow # if you have your own mysql, config it here, and disable the 'mysql' config blow
- MYSQL_URL=rap2-mysql # links will maintain /etc/hosts, just use 'container_name' - MYSQL_URL=mysql # links will maintain /etc/hosts, just use 'container_name'
- MYSQL_PORT=3306 - MYSQL_PORT=3306
- MYSQL_USERNAME=root - MYSQL_USERNAME=root
- MYSQL_PASSWD= - MYSQL_PASSWD=
- MYSQL_SCHEMA=rap2 - MYSQL_SCHEMA=rap2
# redis config # redis config
- REDIS_URL=rap2-redis - REDIS_URL=redis
- REDIS_PORT=6379 - REDIS_PORT=6379
# production / development # production / development
- NODE_ENV=production - NODE_ENV=production
working_dir: /app
privileged: true
###### 'sleep 30 && node scripts/init' will drop the tables ###### 'sleep 30 && node scripts/init' will drop the tables
###### RUN ONLY ONCE THEN REMOVE 'sleep 30 && node scripts/init' ###### RUN ONLY ONCE THEN REMOVE 'sleep 30 && node scripts/init'
command: /bin/sh -c 'sleep 30; node scripts/init; node dispatch.js' command: /bin/sh -c 'node dispatch.js'
# init the databases # init the databases
# command: sleep 30 && node scripts/init && node dispatch.js # command: sleep 30 && node scripts/init && node dispatch.js
# without init # without init
# command: node dispatch.js # command: node dispatch.js
links:
- redis
- mysql
depends_on: depends_on:
- redis - redis
- mysql - mysql
ports:
- "38080:8080" # expose 38080
redis: redis:
container_name: rap2-redis image: redis:4
image: redis:4.0.9
# disable this if you have your own mysql # disable this if you have your own mysql
mysql: mysql:
container_name: rap2-mysql image: mysql:5.7
image: mysql:5.7.22
# expose 33306 to client (navicat) # expose 33306 to client (navicat)
#ports: #ports:
# - 33306:3306 # - 33306:3306

@ -15,7 +15,8 @@
"start": "cross-env NODE_ENV=production pm2 start dist/dispatch.js --name=rap-server-delos", "start": "cross-env NODE_ENV=production pm2 start dist/dispatch.js --name=rap-server-delos",
"lint": "echo \"TSLint checking...\" && tslint -c tslint.json 'src/**/*.ts' 'src/**/*.tsx'", "lint": "echo \"TSLint checking...\" && tslint -c tslint.json 'src/**/*.ts' 'src/**/*.tsx'",
"start:redis": "pm2 start redis-server --name redis-server", "start:redis": "pm2 start redis-server --name redis-server",
"clean": "pm2 delete all" "clean": "pm2 delete all",
"build-docker": "docker build --rm -f \"Dockerfile\" -t rapteam/rap2-delos:latest ."
}, },
"author": "bosn, nuysoft", "author": "bosn, nuysoft",
"license": "ISC", "license": "ISC",

@ -3,7 +3,7 @@ import { IConfigOptions } from "../types"
let config: IConfigOptions = { let config: IConfigOptions = {
version: 'v2.7.0', version: 'v2.7.0',
serve: { serve: {
port: 8080, port: (process.env.SERVE_PORT && parseInt(process.env.SERVE_PORT)) || 8080,
path: '', path: '',
}, },
keys: ['some secret hurr'], keys: ['some secret hurr'],

@ -3,7 +3,7 @@ import { IConfigOptions } from "../types"
let config: IConfigOptions = { let config: IConfigOptions = {
version: '2.7.0', version: '2.7.0',
serve: { serve: {
port: 8080, port: (process.env.SERVE_PORT && parseInt(process.env.SERVE_PORT)) || 8080,
path: '', path: '',
}, },
keys: ['some secret hurr'], keys: ['some secret hurr'],

@ -4,7 +4,7 @@ import { IConfigOptions } from "../types"
let config: IConfigOptions = { let config: IConfigOptions = {
version: '2.7.0', version: '2.7.0',
serve: { serve: {
port: (process.env.EXPOSE_PORT && parseInt(process.env.EXPOSE_PORT)) || 8080, port: (process.env.SERVE_PORT && parseInt(process.env.SERVE_PORT)) || 8080,
path: '', path: '',
}, },
keys: ['some secret hurr'], keys: ['some secret hurr'],

Loading…
Cancel
Save