工欲善其事,必先利其器。
本文主要总结团队协助中,EasyMock在线接口模拟环境搭建。
下文将分docker环境以及单机环境分别说明。
Easy Mock是一个用于快速创建和管理API模拟的工具,旨在帮助开发人员进行前端开发时模拟后端接口的返回数据。它提供了一个基于Web的界面,让用户能够轻松创建虚拟的API端点,并定义它们的行为和返回数据。
主要特点和功能包括:
API模拟:Easy Mock允许用户创建虚拟的API端点,并模拟后端接口的行为,定义接口的请求和响应结构。
可视化界面:具有直观友好的Web界面,使用户能够轻松创建、管理和编辑API模拟。
数据模板:支持使用模板语法来生成动态数据,可以根据需要定义各种类型的数据响应。
团队协作:支持多人协作,可以分享API模拟数据,方便团队内部共享模拟接口的数据和设置。
Mock数据持久化:Easy Mock可以将模拟的数据持久化保存,使得下次使用时无需重新创建。
Easy Mock通常用于前端开发过程中,在后端尚未开发完成或者需要模拟特定场景的数据时使用。它能够提供快速、灵活的方式来模拟API接口,让前端开发者能够独立地进行前端开发,不必等待后端接口准备好。
在Linux服务器上安装Docker环境,具体可以参考:https://docs.docker.com/engine/install/ubuntu/
参考https://docs.docker.com/compose/install/standalone/
手动安装
wget https://gh.ddlc.top/https://github.com/docker/compose/releases/download/v2.18.0/docker-compose-linux-x86_64 > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
验证
docker-compose -v
#开放9011端口号
firewall-cmd --zone=public --add-port=9002/tcp --permanent
#重载防火墙规则
sudo firewall-cmd --reload
/data/platform/04_easymock/workspace
参考https://github.com/easy-mock/easy-mock-docker
version: '3'
services:
mongodb:
image: mongo:3.4.1
volumes:
# ./data/db 数据库文件存放地址,根据需要修改为本地地址
- './data/db:/data/db'
networks:
- easy-mock
restart: always
redis:
image: redis:4.0.6
command: redis-server --appendonly yes
volumes:
# ./data/redis redis 数据文件存放地址,根据需要修改为本地地址
- './data/redis:/data'
networks:
- easy-mock
restart: always
web:
image: easymock/easymock:1.6.0
command: /bin/bash -c "npm start"
ports:
- 9011:7300
volumes:
# 日志地址,根据需要修改为本地地址
- './logs:/home/easy-mock/easy-mock/logs'
# 配置地址,请使用本地配置地址替换
# - './production.json:/home/easy-mock/easy-mock/config/production.json'
networks:
- easy-mock
restart: always
networks:
easy-mock:
docker-compose.yml
并将上面 docker-compose 文件内容复制进入 docker-compose.yml
,然后将内容中注释位置替换为自己需要的本地地址即可。主要有三个需要替换的地方,数据库文件存储位置,日志文件存储位置,自定义配置文件本地地址。docker-compose -p esaymock up -d
docker-compose logs -f
docker images # 查看镜像
docker ps -a # 查看所有容器服务的状态
mogo
//显示所有数据库
show dbs
//切换当前数据库
use db_name
//查看当前数据库
db
//查看当前库下的表名
show tables
活
show collections
//查询表数据
db.collection_name.find()
导出
mongoexport --host <ip> --port <port> -d <db_name> -u <user_name> -p <password> --authenticationDatabase admin -c <table_name> -o <file_name>.json
导入
mongoimport --host <ip> --port <port> -d <db_name> -u <user_name> -p <password> --authenticationDatabase admin -c <table_name> --file <file_name>.json
easy-mock数据库迁移
East-mock db存储的主要是账号信息、工程信息等
#登录3.162 mogodb
#use easy-mock
#show collections
groups
mock_counts
mocks
projects
user_group
user_project
users
mongoexport
# 3.163
cd /opt/mongodb/easy-mock
mongoexport -d easy-mock -c groups -o groups.json
mongoexport -d easy-mock -c mock_counts -o mock_counts.json
mongoexport -d easy-mock -c mocks -o mocks.json
mongoexport -d easy-mock -c projects -o projects.json
mongoexport -d easy-mock -c user_group -o user_project.json
mongoexport -d easy-mock -c users -o users.json
mongoimport
#3.252
rsync -av root@192.168.3.162:/opt/mongodb/easy-mock /data/platform/04_easymock/workspace/data/db/backup/mongodb
# 3.252 docker
docker exec -it mongodb-container_id bash
docker exec -it 429d29e16dae bash
cd /data/db/backup/mongodb/easy-mock
mongoimport -d easy-mock -c groups --file groups.json
mongoimport -d easy-mock -c mock_counts --file mock_counts.json
mongoimport -d easy-mock -c mocks --file mocks.json
mongoimport -d easy-mock -c projects --file projects.json
mongoimport -d easy-mock -c user_group --file user_project.json
mongoimport -d easy-mock -c users --file users.json
redis基本命令
启动 redis 服务器,打开终端并输入命令 redis-cli,该命令会连接本地的 redis 服务。
$ redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG
在以上实例中我们连接到本地的 redis 服务并执行 PING 命令,该命令用于检测 redis 服务是否启动。
redis备份与恢复
redis Save 命令基本语法如下:
redis 127.0.0.1:6379> SAVE
OK
该命令将在 redis 安装目录中创建dump.rdb文件
? 如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。
? 获取 redis 目录可以使用 CONFIG 命令,如下所示:
redis 127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/var/lib/redis"
以上命令 CONFIG GET dir 输出的 redis 安装目录为 /var/lib/redis。
Easymock redis备份与迁移
#3.162
redis-cli
SAVE
CONFIG GET dir
### 3.252
rsync -av root@192.168.3.162:/var/lib/redis/dump.rdb /data/platform/04_easymock/workspace/data/redis/backup/dump.rdb
docker-compose ps -a
docker exec -it workspace-redis-1 bash
redis-cli
127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/data"
cp /data/backup/dump.rdb /data
服务器:Ubuntu 18.04.5 LTS
Node.js(v8.x,
不支持 v10.x)& MongoDB(>= v3.4)& Redis(>= v4.0)。官网:https://github.com/easymock/easymock
$ git clone https://github.com/easy-mock/easy-mock.git
$ cd easy-mock && npm install
找到 config/default.json,或者创建一个 config/local.json 文件,将如下需要替换的字段换成自己的配置即可。
不同环境会加载不同的配置文件,在此之前你应该对 node-config 有所了解。
{
"port": 7300,
"host": "0.0.0.0",
"pageSize": 30,
"proxy": false,
"db": "mongodb://localhost/easy-mock",
"unsplashClientId": "",
"redis": {
"keyPrefix": "[Easy Mock]",
"port": 6379,
"host": "localhost",
"password": "",
"db": 0
},
"blackList": {
"projects": [], // projectId,例:"5a4495e16ef711102113e500"
"ips": [] // ip,例:"127.0.0.1"
},
"rateLimit": { // https://github.com/koajs/ratelimit
"max": 1000,
"duration": 1000
},
"jwt": {
"expire": "14 days",
"secret": "shared-secret"
},
"upload": {
"types": [".jpg", ".jpeg", ".png", ".gif", ".json", ".yml", ".yaml"],
"size": 5242880,
"dir": "../public/upload",
"expire": {
"types": [".json", ".yml", ".yaml"],
"day": -1
}
},
"ldap": {
"server": "", // 设置 server 代表启用 LDAP 登录。例:"ldap://localhost:389" 或 "ldaps://localhost:389"(使用 SSL)
"bindDN": "", // 用户名,例:"cn=admin,dc=example,dc=com"
"password": "",
"filter": {
"base": "", // 查询用户的路径,例:"dc=example,dc=com"
"attributeName": "" // 查询字段,例:"mail"
}
},
"fe": {
"copyright": "",
"storageNamespace": "easy-mock_",
"timeout": 25000,
"publicPath": "/dist/"
}
}
背景图配置:
登录页的背景图服务目前支持 Unsplash 与 Bing。
如果 unsplashClientId
配置留空,默认由 Bing 提供服务。
注意:
publicPath
默认是 '/dist/'
。如有需要,可以将其替换成自己的 CDN;fe
的配置,一旦发生改变应该重新执行 build 命令。$ npm run dev
# 访问 http://127.0.0.1:7300
# 前端静态资源构建打包
$ npm run build
# 以生产环境方式启动,需要提前执行 build
$ npm run start
# 单元测试
$ npm run test
# 语法检测
$ npm run lint
在此之前请先配置好配置文件。
当在内网服务器部署时,推荐使用 PM2 来守护你的应用进程。
$ [sudo] npm install pm2 -g
在此之前,你应该已经完成了 build。
$ NODE_ENV=production pm2 start app.js
Release 中记录了每个版本的详细更改。