教你使用docker部署淘寶rap2服務

什麼是rap2

先來講提及因,在上一個星期的分享會上,談到先後端聯調上,有同事提到了rap2,特地去了解了一下,以爲使用這個東西來進行先後端的接口聯調來真是太方便了,對比咱們以前公司內部開發的API Cloud來講,我更偏向使用rap2javascript

RAP經過GUI工具幫助WEB工程師更高效的管理接口文檔,同時經過分析接口結構自動生成Mock數據、校驗真實接口的正確性,使接口文檔成爲開發流程中的強依賴。有告終構化的API數據,RAP能夠作的更多,而咱們能夠避免更多重複勞動。html

rap1

上面是摘自https://github.com/thx/RAP淘寶阿里媽媽對rap1的描述,看了圖一會兒就能明白,後端制定API返回數據格式,前端經過接口地址在線mock,避免了先後端由於進度不一致而出現單方面等待的現象。前端

使用rap2

能夠直接使用淘寶提供的在線服務來生成在線的接口地址,經過申請一個帳號後,便可在裏面進行接口的編寫、測試等等...這裏再也不贅述。java

rap2-login

部署本身的rap2服務

由於rap2在github上面已經開源,並且也提供了部署方案,這裏講一下本身是如何使用docker來進行部署的。node

前提

  • 安裝docker
  • 安裝docker-compose

若是對docker不太熟悉,又想了解一下docker是什麼的,不妨看看我以前的文章webpack

涉及到的兩個開源倉庫:nginx

  • rap2-delos: 後端數據API服務器,基於Koa + MySQL 戳這裏
  • rap2-dolores: 前端靜態資源,基於React 戳這裏

或者使用本人的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

rap2-delos

運行成功後,須要手動初始化數據庫,咱們進入對象的容器來操做:web

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

從新啓動服務:

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

compose

能夠看到暴露出來的端口是38080,咱們使用curl命令來測試一下是否成功,若是放回Hello RAP!,就說明後端已經部署好了。

> curl localhost:38080

hello-rap

前端部署

前端因爲沒有提供對應的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能夠查看運行的容器

rap2-dolores-ps

至此,咱們就可使用http://{youdomain}:38081來訪問rap2了。

rap2-login

nginx作二級域名轉換

你可能但願上使用http://rap2.{youdomain}.com來訪問剛剛咱們建立的rap2服務,這裏我使用nginx作地址轉換,步驟以下:

在騰訊雲/萬網中加一條A類記錄

我使用的是騰訊雲,阿里雲的添加方法也大體相似,這裏請你們自行谷歌。

rap2-record

在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進行練手,經過實踐仍是學到了一些本身不太熟悉的領域的一些知識,記錄共勉之。

我只是一隻小菜鳥,但我並無停下學習的腳步^_^ 另外,以爲這篇文章不錯,能夠隨手點個贊麼?求星星😊😊
相關文章
相關標籤/搜索