教你使用如何docker部署淘宝rap2服务

什么是rap2

先来说说起因,在上一个星期的分享会上,谈到前后端联调上,有同事提到了rap2,特意去了解了一下,觉得使用这个东西来进行前后端的接口联调来真是太方便了,对比我们之前公司内部开发的API Cloud来说,我更偏向使用rap2

RAP通过GUI工具帮助WEB工程师更高效的管理接口文档,同时通过分析接口结构自动生成Mock数据、校验真实接口的正确性,使接口文档成为开发流程中的强依赖。有了结构化的API数据,RAP可以做的更多,而我们可以避免更多重复劳动。

上面是摘自https://github.com/thx/RAP淘宝阿里妈妈对rap1的描述,看了图一下子就能明白,后端制定API返回数据格式,前端通过接口地址在线mock,避免了前后端因为进度不一致而出现单方面等待的现象。

使用rap2

可以直接使用淘宝提供的在线服务来生成在线的接口地址,通过申请一个账号后,即可在里面进行接口的编写、测试等等...这里不再赘述。

部署自己的rap2服务

因为rap2在github上面已经开源,而且也提供了部署方案,这里讲一下自己是如何使用docker来进行部署的。

前提

  1. 安装docker
  2. 安装docker-compose

涉及到的两个开源仓库:

rap2-delos: 后端数据API服务器,基于Koa + MySQL 戳这里

rap2-dolores: 前端静态资源,基于React 戳这里

或者使用本人的github仓库 Rynxiao/rap2-docker,已经包含了这两个仓库,并加入了配置。

后端部署

在后端部署方面,在github上已经给出了使用docker的部署方面,因此,just follow就好。

> mkdir rap2
> cd rap2
> git clone https://github.com/thx/rap2-delos.git
> cd rap2-delos
> docker-compose up -d

运行成功后,需要手动初始化数据库,我们进入对象的容器来操作:

> docker exec -it rap2-delos sh
> node scripts/init
> exit

重新启动服务:

> docker-compose down
> docker-compose up -d

可以看到暴露出来的端口是38080,我们使用curl命令来测试一下是否成功,如果放回Hello RAP!,就说明后端已经部署好了。

> curl localhost:38080

前端部署

前端由于没有提供对应的docker部署方法,因此只有我自己来尝试部署了。前端使用的是node进行webpack打包,因此需要一个node的环境,所以我在制作容器的时候需要拉去一个node镜像。

因为部署前端之前没有看后端的部署,所以我前端拉取了一个比较新的版本[10.1.0],如果想和后端公用一个node镜像,可以使用这个node:8.11.1-alpine镜像。

通过npm run build之后,生成的build文件夹中的只是静态资源文件,因此我还需要起一个服务器,这里我通过全局安装http-server来启动一个服务。

下面是具体的过程:

1. git仓库拉取

> cd rap2
> git clone https://github.com/thx/rap2-dolores.git
> cd rap2-dolores

2. 创建一个Dockerfile来构建一个新的node版本镜像

> touch Dockerfile
> vim Dockerfile

Dockerfile中的内容为:

# 拉取10.1.0版本的node镜像
FROM node:10.1.0

# 维护人
MAINTAINER ryn

# 创建工作目录
RUN mkdir -p /home/rap2-dolores
WORKDIR /home/rap2-dolores

# 将代码拷贝至工作目录
COPY . /home/rap2-dolores

# 全局安装http-server服务器
RUN npm install -g http-server

# 全局安装node-sass(一定要带--unsafe-perm,否则会报错)
RUN npm install --unsafe-perm -g node-sass

# 安装依赖
RUN npm install

# 打包
RUN npm run build

3. 使用docker-compose来启动服务

> touch docker-compose.yml
> vim docker-compose.yml

docker-compose.yml中的内容为:

version: '2.2'

services:
 delores:
  # 容器名称
  container_name: rap2-dolores

  # 通过Dockerfile来构建本地镜像
  build: .

  # 通过images来构建,这里的地址暂不适用,因为src/config中的配置需要根据自己的服务器来动态构建
  # image rynxiao/rap2-dolores-nodejs

  # 指定工作目录
  working_dir: /home/rap2-dolores

  # 指定生产环境
  environment:
   - NODE_ENV=production

  # 启动http-server,并映射端口到容器内部8081上
  command: /bin/sh -c 'http-server ./build -s -p 8081'
  privileged: true

  # expose port 38081
  ports:
   - "38081:8081"

更改src/config/config.prod.js中的配置,将接口请求地址指向你的后端服务器,以下是我的配置,各位按需更改。

module.exports = {
 serve: 'http://xxx.xxx.xxx.xx:38080',
 keys: ['some secret hurr'],
 session: {
  key: 'koa:sess'
 }
}

注意上面的xxx.xxx.xxx.xxx是你公网的ip地址,如果你通过端口映射做了二级域名的配置,也可以去掉端口号,直接写你的二级域名就可以了,比如你的二级域名为:http://rap2.xxx.com,那么serve就可以配置为http://rap2.xxx.com

启动服务

> docker-compose up -d

这一步会执行镜像的构建,使用docker ps可以查看最新的构建镜像,使用docker-compose ps可以查看运行的容器

至此,我们就可以使用http://{youdomain}:38081来访问rap2了。

nginx做二级域名转换

你可能希望上使用http://rap2.{youdomain}.com来访问刚刚我们创建的rap2服务,这里我使用nginx做地址转换,步骤如下:

在腾讯云/万网中加一条A类记录

我使用的是腾讯云,阿里云的添加方法也大致类似,这里请大家自行谷歌。

在nginx中增加一个server配置

> cd /usr/local/nginx-1.13.9/conf
> mkdir sites-enabled
> cd sites-enabled
> vim rap2.{youdomain}.com.conf

rap2.{youdomain}.com.conf中的内容如下:

server {
  listen 80;
  server_name rap2.{youdomain}.cn;
  access_log logs/rap2-site.log;

  location / {
   proxy_redirect off;
   proxy_set_header Host $host;
   proxy_set_header X-Real-Ip $remote_addr;
   proxy_set_header X-Forwarded-For $remote_addr;
   proxy_pass http://127.0.0.1:38081/;
  }
}

其实就是做了一个端口转换。接下来在nginx.conf中进行引入

# nginx.conf http模块
include /usr/local/nginx-1.13.9/conf/sites-enabled/*.conf;

# 重启nginx
nginx -s reload

然后我们就可以使用rap2.{youdomain}.com来访问rap2服务了

注:{youdomain}替换为自己的域名

小结

算是对之前学习的docker进行练手,通过实践还是学到了一些自己不太熟悉的领域的一些知识,记录共勉之。也希望大家多多支持我们。

(0)

相关推荐

  • Docker构建pinpoint部署的方法

    Pinpoint 1. Install pinpoint-server 下载镜像 docker pull yous/pinpoint 查看镜像 docker images 启动容器 docker run -d --name=pinpoint -p 28080-28082:28080-28082 --cap-add SYS_PTRACE yous/pinpoint docker run -i -t --name=pinpoint -p 28080-28082:28080-28082 --cap-a

  • Docker 部署Scrapy的详解

    假设我们要在10台Ubuntu 部署爬虫如何搞之?用传统的方法会吐血的,除非你记录下来每个步骤,然后步骤之间的次序还完全一样,这样才行.但是这样还是累啊,个别软件下载又需要时间.所以Docker出现了.Docker把系统,各种需要的应用,还有设置编译成一个image,然后 run一下就可以了.跟虚拟机的区别是不需要而外的物理支持,共用的. 1. 部署步骤 1.1 上传本地scrapy爬虫代码除了settings外到git 服务器 1.2 编写Dockerfile文件,把settings和requ

  • Docker自动部署Apache Tomcat的方法

    介绍 本文会讲述: 扩展Tomcat的官方Dockerfile 构建新的镜像 从修改过的新镜像启动容器 在容器里部署RESTful的Web服务并测试 Apache Tomcat 使用docker search可以查到最流行的(和官方的)Docker Tomcat容器: $ sudo docker search tomcat [sudo] password for craig: NAME DESCRIPTION STARS OFFICIAL AUTOMATED tomcat Apache Tomc

  • Docker学习笔记之k8s部署方法

    本文记录了如何在ubuntu 14.04裸机上部署k8s集群,参考自官方文档. 拓扑结构 1master + 2minion k8s-master 192.168.0.201 master k8s-node1 192.168.0.202 minion k8s-node2 192.168.0.203 minion 准备工作系统 安装Ubuntu 14.04 LTS 64bit server版本系统,配置好hostname和ip. 在更新国内的软件源的时候,由于GFW的原因,经常会出现md5校验错误

  • 使用Docker搭建Django,Nginx,R,Python部署环境的方法

    本文介绍了使用Docker搭建Django,Nginx,R,Python部署环境的方法,分享给大家,具体如下: 基本环境: Ubuntu 16.10 docker 17.06.0-ce 压缩自己的项目文件 1.这里需要注意的是,在压缩的时候,也需要把自己的需要的Python包写在requirement.txt,这样搭建环境的时候才会知道你需要什么包,才能一起安装,我的项目的requirement.txt 内容如下. Django==1.10.5 rpy2==2.8.5 PyMySQL==0.7.

  • Docker Machine远程部署Docker的方法

    一.docker machine概要 Docker Machine发布之前,你可能会遇到以下问题: ①你需要登录主机,按照主机及操作系统特有的安装以及配置步骤安装Docker,使其能运行Docker容器. ②你需要研发一套工具管理多个Docker主机并监控其状态. ③你在本地开发,产品部署在公有云平台,你希望能尽可能的减小两个环境的差异性 Docker Machine的出现解决了以上问题. ①Docker Machine简化了部署的复杂度,无论是在本机的虚拟机上还是在公有云平台,只需要一条命令便

  • 使用Docker部署Spring Boot的应用示例

    Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下. 首先构建一个简单的 Spring Boot 项目,然后给项目添加 Docker 支持,最后对项目进行部署. 一个简单 Spring Boot 项目 在 pom.xml 中 ,使用 Spring Boot 2.0 相关依赖 <parent> <groupId>org.springframework.boot</groupId>

  • 详解基于Docker的服务部署流程

    本次总结涉及到Docker-io.Docker-ce的安装.CentOS7镜像的制作.Docker私有仓库搭建.CentOS6.7环境下从CentOS7私有仓库拉取私有镜像.Docker容器运行.CentOS6.5及CentOS7一起运行时兼容性处理等内容. 一.Docker基本组件及DevOps运作流程 DockerImage:Docker镜像是一个运行容器的只读模板. DockerContainer:Docker容器是一个运行应用的标准化单元. DockerRegistry:Docker注册

  • 教你使用如何docker部署淘宝rap2服务

    什么是rap2 先来说说起因,在上一个星期的分享会上,谈到前后端联调上,有同事提到了rap2,特意去了解了一下,觉得使用这个东西来进行前后端的接口联调来真是太方便了,对比我们之前公司内部开发的API Cloud来说,我更偏向使用rap2. RAP通过GUI工具帮助WEB工程师更高效的管理接口文档,同时通过分析接口结构自动生成Mock数据.校验真实接口的正确性,使接口文档成为开发流程中的强依赖.有了结构化的API数据,RAP可以做的更多,而我们可以避免更多重复劳动. 上面是摘自https://gi

  • 详解基于docker 如何部署surging分布式微服务引擎

    1.前言 转眼间surging 开源已经有1年了,经过1年的打磨,surging已从最初在window 部署的分布式微服务框架,到现在的可以在docker部署利用rancher 进行服务编排的分布式微服务引擎,再把业务进行剥离, 通过配置路径就能驱动加载业务模块,这样的细粒度设计,能更加灵活从业务中针对于对象加以细分,能更加灵活的拆分聚合服务.而这篇文章我们来谈谈基于docker 如何部署 surging源码下载 2.概述 容器,就是用来存放镜像的器皿,而镜像是构建成的一个轻量的.独立的.可执行

  • 手把手教你实现Docker 部署 vue 项目

    1.写在前面: Docker 作为轻量级虚拟化技术,拥有持续集成.版本控制.可移植性.隔离性和安全性等优势.本文使用Docker来部署一个vue的前端应用,并尽可能详尽的介绍了实现思路和具体步骤,以方便有类似需要的同学参考. Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,该容器包含了应用程序的代码.运行环境.依赖库.配置文件等必需的资源,通过容器就可以实现方便快速并且与平台解耦的自动化部署方式,无论你部署时的环境如何,容器中的应用程序都会运行在

  • Python实现淘宝秒杀聚划算抢购自动提醒源码

    说明 本实例能够监控聚划算的抢购按钮,在聚划算整点聚的时间到达时发出提醒(音频文件自己定义位置)并自动弹开页面(URL自己定义). 同时还可以通过命令行参数自定义刷新间隔时间(默认0.1s)和监控持续时间(默认1800s). 源码 # encoding: utf-8 ''''' @author: Techzero @email: techzero@163.com @time: 2014-5-18 下午5:06:29 ''' import cStringIO import getopt impor

  • Visual Studio 2017使用淘宝镜像的方法

    使用VS2017还原NPM包时,因为要访问外网,安装时间特别漫长,而且等待很长时间也可能安装错误 npm安装 淘宝 NPM 镜像:一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步. 安装淘宝镜像 1 npm config set registry https://registry.npm.taobao.org 2 npm info underscore 3 修改VS2017Npm外部配置工具 Npm配置默认选项 需要添加以

  • Appium+python自动化之连接模拟器并启动淘宝APP(超详解)

    简介 上一篇讲解完模拟器的安装.配置好以后,就好比我们手机已经买好,并且系统已经做好了,就差我们用数据线和电脑连接开始实战了,这篇宏哥就带着小伙伴们和童鞋们趁热打铁,讲解和分享一下如何连接模拟器(电脑版的虚拟手机),然后再安装一款APP-淘宝为例. 一.appium+pycharm+连接夜神模拟器并启动淘宝APP(推荐) 1.首先打开pycharm并写好代码,这里以淘宝APK作为测试Demo,淘宝APK我是放在电脑桌面(或者放置同代码同个目录下).如下图所示 其中|:driver = webdr

  • Python 自动登录淘宝并保存登录信息的方法

    前段时间时间为大家讲解了如何使用requests库模拟登录淘宝,而今天我们将对该功能进行丰富.所以我们把之前的那个版本定为1.0,而今天修改的版本定为2.0.版本的迭代意味着功能的升级,那今天的2.0版本较之前的1.0版本有哪些改进呢?我们一起来看看! 1.0版本实现步骤 我们先来回顾一下模拟登录淘宝的步骤吧,我们还是先看看淘宝登录的详细时序图: 这是淘宝网登录的一个请求流程,而我们模拟登录也是根据这样的一个流程.但是在代码模拟登录的时候就不会分的这么细,我们根据封装的思想将整个登录流程封装在四

  • 用Python selenium实现淘宝抢单机器人

    一.痛点 各大电商在一些特定的日子都会开启促销活动,如618.双十一等,有时还得盯着时间抢限量发售的商品,但你的成功率高吗?是否经常会遇到App一直加载,刷新后发现商品被一扫而光了?事实是,很多和你竞争抢购商品的对手比你的手更快更准,因为他们很多都是能精准执行命令的机器人. 气不气?没关系这篇文章将手把手教你零基础建设一个自己的机器人,帮你在设定好的时间自动下单,再也不用为抢不到心爱的宝贝烦恼了! 二.准备工作 在建设机器人之前,请确保你准备好了如下工具: 一台电脑:不需要多快多新,能用就行 C

  • 5分钟教你实现用docker搭建Redis集群模式和哨兵模式

    如果让你为开发.测试环境分别搭一套哨兵和集群模式的redis,你最快需要多久,或许你需要一天?2小时?事实是可以更短. 是的,你已经猜到了,用docker部署,真的只需要十几分钟. 一.准备工作 拉取redis镜像 运行如下命令: docker pull redis 该命令拉取的镜像是官方镜像,当然你可以搜索其他的镜像,这里不做深入 查看镜像情况: 二.部署redis哨兵主从模式 什么是哨兵模式?--请自行百度 1.什么是docker compose? Docker Compose 可以理解为将

  • python 淘宝爬虫小实例

    兄弟们,双十一剁手了吗?购物虽快乐,但是别过度了,毕竟很多降价不是真的降价,眼睛擦亮了~ 今天来试试爬一下某宝,这玩意学会了做外包的话,还是值几个钱的. 环境/模块介绍 python 3.8 使用的环境 pycharm 使用的编辑器 selenium 浏览器驱动的第三方模块 csv 数据保存的模块 time 时间模块, 可以用于程序的延迟 random 随机数模块 下载操作浏览器驱动的第三方模块 对应视频教程: Python:双十火热进行中,教你带你用Python继续剁手 selenium pi

随机推荐