DOClever docker搭建与使用 2021-07-18 程序之旅,记录 5 条评论 2545 次阅读 ## DOClever docker搭建与使用 ### 搭建环境 - MongoDB - docker ### 安装MongoDB(已安装跳过) ```shell # 拉取 mongo 镜像 $ docker pull mongo # 创建 mongodb 数据保存目录 $ mkdir /var/mongodata # 创建并运行 mongo 容器 $ docker run -p 27017:27017 -v /var/mongodata/configdb:/data/configdb -v /var/mongodata/data:/data/db -v /etc/localtime:/etc/localtime:ro --name mongodb -d mongo --auth ``` ##### 添加用户名与密码 ```shell # 查看mongo 的容器ID $ docker ps $ docker exec -it fe6e1f48d911 mongo admin # 创建管理员用户 > db.createUser({ user: 'admin', pwd: '123456', roles: [ { role: "root", db: "admin" } ] }); # 校验用户与密码 > db.auth("admin","123456"); 1 > exit 修改密码 > use admin; >> db.changeUserPassword('admin','88889999'); ``` ### 安装 DOClever ```shell $ docker run -it -d --name doclever -p 7000:10000 --link mongodb:mongodb \ -e DB_HOST=mongodb://admin:123456@mongodb:27017/DOClever?authSource=admin \ -e PORT=10000 -e DB_FILE=/root/DOClever/data/file \ -e DB_IMG=/root/DOClever/data/img \ -e DB_TEMP=/root/DOClever/data/tmp -v /var/DoClever/file:/root/DOClever/data/file \ -v /var/DoClever/img:/root/DOClever/data/img \ -v /var/DoClever/tmp:/root/DOClever/data/tmp \ -v /etc/localtime:/etc/localtime:ro \ lw96/doclever ``` 如果报错可以进入到容器中找错误 ```shell $ docker exec -it doclever /bin/bash # 手动输入前面创建容器时候的参数,看看是那里出错了 $ /root/DOClever/Server/bin/www ``` 如果需要修改配置文件的内容可以使用 ```shell $ docker cp doclever:/root/DOClever/config.json config.json $ vim config.json $ docker cp config.json doclever:/root/DOClever/config.json ``` > 这里有一个坑,如果一直连接提示 > > ``` > Unhandled rejection MongoError: Authentication failed. > at /root/DOClever/Server/node_modules/mongodb-core/lib/connection/pool.js:595:61 > at authenticateStragglers (/root/DOClever/Server/node_modules/mongodb-core/lib/connection/pool.js:513:16) > at Connection.messageHandler (/root/DOClever/Server/node_modules/mongodb-core/lib/connection/pool.js:549:5) > at emitMessageHandler (/root/DOClever/Server/node_modules/mongodb-core/lib/connection/connection.js:309:10) > at Socket. (/root/DOClever/Server/node_modules/mongodb-core/lib/connection/connection.js:452:17) > at emitOne (events.js:116:13) > at Socket.emit (events.js:211:7) > at addChunk (_stream_readable.js:263:12) > at readableAddChunk (_stream_readable.js:250:11) > at Socket.Readable.push (_stream_readable.js:208:10) > at TCP.onread (net.js:597:20) > > ``` > > 这个问题,并且使用的是 `mongodb://${user}:${pass}@${uri}/${db}` 这种形式的方式连接数据库,但还是显示没有权限,可能是因为这个 DOClever 是 admin 的用户创建的,所以需要在url后添加 `?authSource=admin` ### 登录 DOClever 修改管理员密码 默认管理员账号/密码:DOClever/DOClever ![doclever 修改管理员密码](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/20210718222724.gif) ### 从 swagger 中导入 mock 数据 doclever 的文档有提及:"Swagger导入分为两种,一种是通过swagger的json url来导入,还有一种是通过json来进行导入,在目前的版本中,swagger url导入后的工程会托管其url来更新工程,这样当swagger有更新的时候就可以将其DOClever工程保持同步。" 说明 url 导入地址需要时公网地址才行。 这里使用 json 导入方式 #### 第一步 打开 swagger-ui.html,找到对应的 api-docs 接口,点击 http://localhost:8088/v2/api-docs 后弹出一个 json 字符串页面。 ![image-20210720214913103](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/20210720214914.png) #### 第二步 拷贝 json 字符串到 DOClever 中。 ![image-20210720215203956](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/20210720215205.png) 点击保存即可导入,如果需要更新接口,可以在 设置->更新工程导入 json 数据 ![image-20210720215312685](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/20210720215314.png) #### 第三步 Mock 数据生成,如果是已经有后端接口可以使用,请求后直接保存请求返回的结果当做 Mock 数据,随便也测试了接口的可用性。如果没有后端接口可用,可以手动录入 Mock 数据,也能使用 导入 Json 的。 ![mock 数据生成](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/20210720225829.gif) --- ### 2021年7月23日 接口内网测试需要在本地有 node 的环境,并执行 net.js 的脚本 ![](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/net.js 脚本.png) ### 2021年7月24日 使用 pm2 进行线程管理 ```shell $ npm install -g pm2 $ npm install -g npm@7.20.1 $ pm2 start net.js --name net -- http://121.5.143.153:7000/mock/*********** -- http://localhost:8001 [PM2] Starting /root/net.js in fork_mode (1 instance) [PM2] Done. ┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐ │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤ │ 0 │ net │ default │ N/A │ fork │ 31502 │ 0s │ 0 │ online │ 0% │ 3.0mb │ root │ disabled │ └─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘ ``` 常用的 pm2 命令 - 启动进程/应用 `pm2 start bin/www 或 pm2 start app.js` - 结束进程/应用 `pm2 stop www` - 删除进程/应用 `pm2 delete www` - 列出所有进程/应用 `pm2 list` 打赏: 微信, 支付宝 标签: docker, 前端, doclever, swagger 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
厉害啊,大佬!!!
感谢吴老的细心指导,感谢大佬
厉害啊,大佬!!!
厉害啊 博主
感谢陈老的细心指导,感谢大佬