文章目录

  • 前言
  • 准备工作
  • 安装
    • mariadb及redis安装
    • rap2-delos安装
    • rap2-dolores 安装
    • nginx配置ssl正式及解决跨域问题
    • 安装确认
  • 使用说明
前言

技术团队,文档管理是一项至关重要的工作,不管是对于开发人员,还是对于测试人员,还是对于新同事,一个好的文档能让整个团队的效率大大的提升;rap是阿里妈妈前端团队维护并开源的一套文档管理系统,很好用;官方入口,没有使用过的可以在这里体验一下;源代码github托管地址。
但是对于企业来说,技术文档相当于商业机密(对外的文档除外),为了保证信息安全,既然又是开源的项目,自然把服务器搭建在企业内部也是没有任何问题的。
下面就以Docker的方式来搭建一个RAP2的服务;同时实现SSL证书认证,最终完成之后的效果如下:

准备工作
  • 安装说明
    官方提供了nodejs的安装方式,并没有提供以Docker的安装方式,官方项目中提供了一个后端的docker-compose.yml,但是在实际的使用过程中,还是会存在一些的问题;所以,下面我选择的是逐个去安装,同时把在安装过程中遇到的所有问题就列举出来。
  • 项目说明
    RAP2是一个前后端分离的项目
    后端:rap2-delos
    前端:rap2-dolores
    数据库:mysql或者mariadb (mariadb是mysql的一个分支,本质上是互相兼容的,所以用那个都行)
    缓存:redis
  • 证书申请
    备用!证书的添加是一个可要可不要的过程,这里列举出来,以备不时之需;可以到腾讯云或者阿里云去申请一个免费的ssl证书,具体参考: 免费SSL证书实现https请求
安装
mariadb及redis安装
  • 创建目录

    mkdir -p /usr/local/docker/rap2
    cd /usr/local/docker/rap2
    #后端项目的文件夹
    mkdir rap2-delos
    #前端项目的文件夹
    mkdir rap2-dolores
    
  • 安装mariadb
    docker run -d --restart=always --name rap2-mariadb  -v `pwd`/mysql:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456 -p 33306:3306 mariadb:latest
    
    • 说明:
    1. -v pwd/mysql:/var/lib/mysql
      将当前目录下的mysql文件夹挂载到容器的/var/lib/mysql目录下;目的是为了持久化mysql的数据,防止后台服务容器重新运行或者迁移导致数据丢失;这个必须加
    2. MYSQL_ROOT_PASSWORD=123456
      数据库的密码
    3. 33306:3306
      宿主机端口33306映射到3306端口 (后续可以不映射,第一次安装的时候先隐射,便于创建库跟表)
    • 创建库
      创建一个名称为RAP2_DELOS_APP的数据库

      docker exec rap2-mariadb mysql -uroot -p123456 -e 'CREATE DATABASE IF NOT EXISTS RAP2_DELOS_APP DEFAULT CHARSET utf8 COLLATE utf8_general_ci'
      
  • 安装redis
    docker run -d --restart=always --name rap2-redis redis:latest
    
rap2-delos安装
  • 创建一个环境配置文件
    由于rap2-delos是支持本地环境、测试环境、正式环境配置的;测试环境是包含了很多测试数据的,为了不影响安装之后的正常使用,这里使用正式环境的方式去运行,因此需要做以下配置;

    • 进入工作目录

      cd /usr/local/docker/rap2/rap2-delos
      
    • 添加配置文件
      vi pm2.config.js
      添加一下配置:

      module.exports = {apps: [{name: 'rap-server-delos',script: 'dist/dispatch.js',ignore_watch: [ // 不用监听的文件'node_modules','logs'],env: {'NODE_ENV': 'production',//正式环境配置'REDIS_URL': 'rap2-redis',//redis docker容器运行的别名,根据具体情况编辑'REDIS_PORT': '6379',//redis默认端口 可以不设置'MYSQL_URL': 'rap2-mariadb',//数据库 docker容器运行的别名,根据具体情况编辑'MYSQL_PORT': '3306',//mariadb默认数据库端口'MYSQL_SCHEMA': 'RAP2_DELOS_APP',//数据库名称,代码中默认使用的是rap2的数据库,这里更改为和测试环境相同名称的数据库'MYSQL_PASSWD': '123456',//数据库的密码'TEST_MODE': 'true'//这里按道理应该是false 但是实际测试发现代码中出现了一个bug,不设置这个选项会导致操作一直报need login的错误,通过这个方式规避},env_dev: {//测试环境的配置'NODE_ENV': 'development'},error_file: './logs/app-err.log',out_file: './logs/app-out.log'}]
      }
      
  • 创建Dockerfile
    vi Dockerfile-delos
    添加以下配置文件

    FROM node:alpineRUN echo -e "http://mirrors.aliyun.com/alpine/latest-stable/main\n\ http://mirrors.aliyun.com/alpine/latest-stable/community" > /etc/apk/repositories#设置时区
    RUN apk update && apk add tzdata && \ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \echo "Asia/Shanghai" > /etc/timezone && \rm -rf /root/.cache#安装 pm2
    RUN npm install -g pm2#安装cnpm
    RUN npm install -g cnpm --registry=https://registry.npm.taobao.org && \apk update && apk add curl git#github下载rap2-delos并通过cnpm编译
    RUN mkdir /app && cd /app && \git clone https://github.com/thx/rap2-delos.git && cd /app/rap2-delos && \cnpm install && \cnpm run build#将前面添加的配置文件拷贝到镜像中
    ADD pm2.config.js /app/rap2-delos/pm2.config.jsWORKDIR /app/rap2-delos#使用pm2运行配置 实现环境变量的配置
    #记得务必要添加--no-daemon 否则运行镜像运行会失败
    ENTRYPOINT ["pm2","start","/app/rap2-delos/pm2.config.js","--no-daemon"]
    
  • 构建镜像

    docker build -f ./Dockerfile-delos -t rap2-delos:node-alpine .
    

    这个过程会比较的漫长,要在github上面下载源代码,还得安装pm2 cnpm,同时还需要build项目,build之前还得下载各种依赖库,镜像构建成功之后会看到下面的镜像:

  • 运行镜像

    docker run -d --restart=always  --name rap2-delos --link rap2-mariadb  --link rap2-redis -p 38080:8080 rap2-delos:node-alpine
    

    • link
      由于上面配置的时候使用的是容器的别名连接数据库和redis,所以这里一定要使用link去关联数据库和redis两个容器;如果上面的配置使用的是ip端口访问,这里可以不用link
  • 添加数据库表
    这种方式失败的可能性比较的大,因此,这里建议使用下面的sql脚本直接到库里面去执行创建表更合适

    docker exec rap2-delos cnpm run create-db
    

    脚本地址
    执行成功之后如下图:

    执行以下指令修改admin的密码,默认admin的密码是不可用的,这里将其改为123456,rap2用户密码的加密规则为MD5(MD5(密码)),你可以根据自己的习惯更换合适的密码;

    UPDATE Users SET `password` = '14e1b600b1fd579f47433b88e8d85291' where id = 100000000
    
  • 后端服务测试
    http://你服务运行的ip:38080,出现以下显示说明后台启动成功

rap2-dolores 安装
  • 进入工作目录

    /usr/local/docker/rap2/rap2-dolores
    
  • 创建Dockerfile
    vi Dockerfile-dolores
    添加以下配置

    FROM node:alpineRUN echo -e "http://mirrors.aliyun.com/alpine/latest-stable/main\n\ http://mirrors.aliyun.com/alpine/latest-stable/community" > /etc/apk/repositories#设置时区
    RUN apk update && apk add tzdata && \ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \echo "Asia/Shanghai" > /etc/timezone && \rm -rf /root/.cache#安装cnpm
    RUN npm install -g cnpm --registry=https://registry.npm.taobao.org && \apk update && apk add curl git python make g++//下载源码  更换后台服务的地址  build项目
    RUN mkdir /app && cd /app && \git clone https://github.com/thx/rap2-dolores && cd /app/rap2-dolores && \sed -i "s/http\:\/\/rap2api\.taobao\.org/https\:\/\/rap\.你的域名\.com\.cn\/rap/g"  src/config/config.prod.ts  && \cnpm install && cnpm rebuild node-sass && cnpm run build && \cnpm install -g serveWORKDIR /app/rap2-dolores
    #运行服务
    ENTRYPOINT ["serve","-s","build"]
    
    • 配置修改说明
      上面有一出是需要根据自己的情况修改问rap2-delos(后台服务)的路径,特殊符号务必添加转义符
      如果你不使用域名,直接使用内网ip端口访问,将以上对应的配置按如下方式修改:

      sed -i "s/http\:\/\/rap2api\.taobao\.org/http\:\/\/192\.168\.1\.xxx\:38080/g"  src/config/config.prod.ts
      

      如果你希望使用域名访问的话,请按一下方式配置,具体是http还是https请根据是否配置ssl证书决定
      务必域名后面rap不要删除了,这个在后面的nginx配置解决跨域问题会用到,这里暂时不做解释,后面你一看就明白了

      sed -i "s/http\:\/\/rap2api\.taobao\.org/https\:\/\/rap\.你的域名\.com\.cn\/rap/g"  src/config/config.prod.ts
      
  • 构建镜像
    docker build -f ./Dockerfile-dolores -t rap2-dolores:node-alpine .
    
  • 运行镜像
    docker run -d --restart=always --name rap2-dolores -p 38081:5000 rap2-dolores:node-alpine
    
  • 测试前端
    如果你使用的是IP加端口的形式访问的话,这里就已经可以通过http://ip:38081的方式去访问服务
    如果你使用的是域名的方式,请看下一章节,当前前端还无法正常的访问到后端,所以需要按以下教程配置nginx之后才可以正常访问
nginx配置ssl正式及解决跨域问题

这里主要是针对通过配置域名访问方式所加的,如果不使用域名,可以不看这一节
由于rap2项目是前后端分离的,如果不处理好,很容易出现跨域问题;

  • nginx正式及相关配置
    在nginx的http节点下添加一个server,具体配置如下

    server {listen 443 ssl;#填写绑定证书的域名server_name rap.你的域名.com.cn;#ssl on;#正式即为上面你通过腾讯云申请的ssl正式,选用压缩包中nginx文件夹下的两个证书文件ssl_certificate /证书路径/1_rap.你的域名.com.cn_bundle.crt;ssl_certificate_key /证书路径/2_rap..你的域名.com.cn.key;ssl_session_timeout 5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;ssl_prefer_server_ciphers on;charset utf-8;resolver 223.5.5.5 223.6.6.6 1.2.4.8 114.114.114.114 valid=3600s;#这里通过rap关键字,将请求转发到后台接口服务#这也就是在rap-dolores修改后端地址的时候为什么要添加一个rap路径的原因location /rap/ {#内网下后端服务rap-delos的请求地址proxy_pass http://192.168.1.xxx:38080/;}#除了rap关键字之外的所有请求都认为是前端的请求location / {#内网下前端服务rap-dolores的请求地址proxy_pass http://192.168.1.xxx:38081;}
    }
    

    请按配置里面的说明将配置文件中的5处需要按自己实际情况修改的地方做一下修改。

安装确认

到此,整个rap2的安装即完成,安装完之后是会存在4个docker容器,请核实!

admin账户信息:
用户名:admin@rap2.com
密码: 123456

由于官方没有提供Docker的方式,因此安装的过程中会遇到各种问题,如果遇到可以随时留言交流!!!

使用说明

待续!!!

使用Docker搭建RAP2(技术文档管理私服)相关推荐

  1. 市面售价2W的仿抖音短视频原生双端APP源码,带技术文档管理后台和数据库

    这个短视频系统源码是2w某站购买来的仿抖音视频app,原生双端开发,带技术文档管理后台和数据库.非常适合用来做类似项目的基础开发框架,能节省大量的开发时间和试错成本. 除了直播没有开通,其他功能都是精 ...

  2. 敏捷开发的技术文档管理

    许多团队或个人都有一个观念是敏捷开发应该弱化技术文档管理,以达到敏捷的目的.其实不然,敏捷开发只是把开发的生命周期变成不断迭代的软件开发过程,在迭代的过程中应该包含了技术文档的整理完善,使其可以为下一 ...

  3. 通过docker搭建企业内部文档共享平台-MM-WiKi

    前面已经通过源码包的方式搭建了MM-WiKi,本编将通过docker容器化的方式部署,此镜像基于centos7和mysql5.7,mm-wiki的版本为v0.2.1. 一.准备工作 1.安装docke ...

  4. 如何撰写出优秀的技术文档

    技术文档分为两类,一类指开发中要用到的研发文档,一类是给客户看的客户文档,技术文档不仅仅适用于SaaS开发,他在各个领域都很常见,能够帮助记录团队/公司内部的一些资料,便于员工进行查询,通过正确的方法 ...

  5. 基于GitBook框架搭建技术文档平台

    源宝导读:为了向用户更好的传递ERP开放平台的价值与技术知识,我们基于GitBook框架搭建了一个文档中心站点,本文将介绍此站点的设计与实现过程. 一.项目架构图 因为文档会涉及到很多的产品线,所以目 ...

  6. (马世龙)Linux下CACTI完全搭建技术文档二

    续(马世龙)Linux下CACTI完全搭建技术文档一 6.完成cacti的安装 1. 首先检查一下rra/下面,有没有数据 2. snmpwalk -v 2c -c public ServerIP i ...

  7. VuePress 手摸手教你搭建一个类Vue文档风格的技术文档/博客

    前言: VuePress是尤大为了支持 Vue 及其子项目的文档需求而写的一个项目,VuePress界面十分简洁,并且非常容易上手,一个小时就可以将项目架构搭好.现在已经有很多这种类型的文档,如果你有 ...

  8. 网页整个技术文档怎么拷贝_企业文档管理混乱?试试文档管理系统

    现代信息技术不断进步,大数据技术和云计算技术都已经"强强联合",日趋膨胀的文档该怎么管理已变为企业必须要彻底解决的关键难题.接下来,我们就一起来看一下企业文件管理中普遍存在的一些难 ...

  9. 【云原生之Docker实战】使用Docker部署Mindoc文档管理平台

    [云原生之Docker实战]使用Docker部署Mindoc文档管理平台 一.Mindoc介绍 1.Mindoc简介 2.Mindoc功能 二.检查宿主机系统版本 1.检查操作系统版本 2.检查系统内 ...

最新文章

  1. .gitmodule中没有为非子模块的路径找到子模块映射
  2. [转载] 百科全说——王晓斋:解析中西医应对肝肾问题(10-10-12)
  3. 共享快递柜业务场景实战(服务构建)
  4. 生日祝福(HTML+CSS+JavaScript+jQuery)
  5. where is Fiori count server execution interval configured
  6. js 随机1-10随机数_寻找随机的错误-一个真实的故事
  7. CCF201412-2 Z字形扫描
  8. php机器人聊天对话框,仿机器人聊天窗口(热身)
  9. python写错了如何撤销-Python集成开发工具Pycharm的使用方法:复制,撤销上一步.......
  10. TextView内部类Layout光标相关方法
  11. ubuntu vscode 配置字体_配置vscode终端字体,vscode终端字体
  12. github 出现无法连接成功问题终极详解
  13. 计算机声音如何处理器,我电脑运行的声音很大,而且CPU的温度总在70到80之间,怎么办啊?...
  14. 房地产数字化营销方案-蓝图
  15. 用python写问答机器人_机器人之Python入门到实践-问答机器人
  16. 头歌:《C语言程序设计编程实践任务》教学团队:祁文青:选择结构程序设计
  17. 大数据早报:谷歌Cloud Natural Languages API推新技术 全球三分之二的人口通过移动设备上网(9.21)
  18. php退出数据库命令,签约1年半!33岁中超旧将正式登陆葡超,时隔16年重回葡萄牙踢球...
  19. 七个基本量纲_七个基本量
  20. 赔1100万美元!谷歌招聘年龄歧视

热门文章

  1. cookie前端写还是后端写
  2. 全网最全-谷粒商城项目-面试总结-简历优化
  3. 2.8.5Django --3 WEB框架
  4. 外卖CPS小程序推广系统外卖侠探探外卖优惠券源码开后台及搭建一条龙
  5. Galgames Hgames下载中心,无毒
  6. jQuery 08-13
  7. Drools记录之DRL规则语言
  8. IT信息技术-1.1 信息系统与信息化
  9. python 人像素描_基于python实现把图片转换成素描
  10. #PCIE# 8b/10b 编码