先來講提及因,在上一個星期的分享會上,談到先後端聯調上,有同事提到了rap2
,特地去了解了一下,以爲使用這個東西來進行先後端的接口聯調來真是太方便了,對比咱們以前公司內部開發的API Cloud
來講,我更偏向使用rap2
。javascript
RAP經過GUI工具幫助WEB工程師更高效的管理接口文檔,同時經過分析接口結構自動生成Mock數據、校驗真實接口的正確性,使接口文檔成爲開發流程中的強依賴。有告終構化的API數據,RAP能夠作的更多,而咱們能夠避免更多重複勞動。html
上面是摘自https://github.com/thx/RAP淘寶阿里媽媽對rap1
的描述,看了圖一會兒就能明白,後端制定API
返回數據格式,前端經過接口地址在線mock,避免了先後端由於進度不一致而出現單方面等待的現象。前端
能夠直接使用淘寶提供的在線服務來生成在線的接口地址,經過申請一個帳號後,便可在裏面進行接口的編寫、測試等等...這裏再也不贅述。java
由於rap2在github上面已經開源,並且也提供了部署方案,這裏講一下本身是如何使用docker
來進行部署的。node
若是對docker不太熟悉,又想了解一下docker是什麼的,不妨看看我以前的文章webpack
涉及到的兩個開源倉庫:nginx
或者使用本人的github倉庫 Rynxiao/rap2-docker,已經包含了這兩個倉庫,並加入了配置。git
在後端部署方面,在github
上已經給出了使用docker
的部署方面,所以,just follow就好。github
> mkdir rap2 > cd rap2 > git clone https://github.com/thx/rap2-delos.git > cd rap2-delos > docker-compose up -d
運行成功後,須要手動初始化數據庫,咱們進入對象的容器來操做:web
> 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
來啓動一個服務。
下面是具體的過程:
> cd rap2 > git clone https://github.com/thx/rap2-dolores.git > cd rap2-dolores
> 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
> 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了。
你可能但願上使用http://rap2.{youdomain}.com
來訪問剛剛咱們建立的rap2服務,這裏我使用nginx作地址轉換,步驟以下:
我使用的是騰訊雲,阿里雲的添加方法也大體相似,這裏請你們自行谷歌。
> 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進行練手,經過實踐仍是學到了一些本身不太熟悉的領域的一些知識,記錄共勉之。