1. 程式人生 > 實用技巧 >easymock的docker-compose部署

easymock的docker-compose部署

網上看的幾篇部署教程都不行,最終還是參考了docker hub倉庫中的easymock教程 https://hub.docker.com/r/easymock/easymock

1. 在伺服器上新建一個資料夾 easymock,用於放置配置檔案production.json 和docker-compose.yml

 docker-compose.yml

version: '2'

services:
  mongodb:
    image: mongo:3.4
    volumes:
      # ./data/db 資料庫檔案存放地址,根據需要修改為本地地址
      - './data/db:/data/db'
    networks:
      - easy-mock
    restart: always

  redis:
    image: redis:4.0.6
    command: redis-server --appendonly yes
    volumes:
      # ./data/redis redis 資料檔案存放地址,根據需要修改為本地地址
      - './data/redis:/data'
    networks:
      - easy-mock
    restart: always

  web:
    image: easymock/easymock:1.6.0
    command: /bin/bash -c "npm start"
    ports:
      - 7300:7300
    volumes:
      # 日誌地址,根據需要修改為本地地址
      - './logs:/home/easy-mock/easy-mock/logs'
      # 配置地址,請使用本地配置地址替換
      - './production.json:/home/easy-mock/easy-mock/config/production.json'
    networks:
      - easy-mock
    restart: always

networks:
  easy-mock:

  production.json

{
  "port": 7300,
  "host": "0.0.0.0",
  "pageSize": 30,
  "proxy": false,
  "db": "mongodb://mongodb/easy-mock",
  "unsplashClientId": "",
  "redis": {
    "keyPrefix": "[Easy Mock]",
    "port": 6379,
    "host": "redis",
    "password": "",
    "db": 0
  },
  "blackList": {
    "projects": [],
    "ips": []
  },
  "rateLimit": {
    "max": 1000,
    "duration": 1000
  },
  "jwt": {
    "expire": "14 days",
    "secret": "shared-secret"
  },
  "upload": {
    "types": [".jpg", ".jpeg", ".png", ".gif", ".json", ".yml", ".yaml"],
    "size": 5242880,
    "dir": "../public/upload",
    "expire": {
      "types": [".json", ".yml", ".yaml"],
      "day": -1
    }
  },
  "ldap": {
    "server": "",
    "bindDN": "",
    "password": "",
    "filter": {
      "base": "",
      "attributeName": ""
    }
  },
  "fe": {
    "copyright": "",
    "storageNamespace": "easy-mock_",
    "timeout": 25000,
    "publicPath": "/dist/"
  }
}

 2. 在資料夾easymock下,執行 docker-compose up -d 此時大概率會報錯,因為資料卷對映的production.json 和 logs 沒有許可權

 3. 執行docker-compose down停止docker-compose,再執行下面授權指令

  chmod 777 logs 和

  chmod 777 production.json
  然後再執行 docker-compose up -d 就能通過http://ip:7300 進行訪問了

4. 總結:

  主要注意兩點:

     一.production.json 檔案中配置mongo和redis地址中localhost 分別替換為 mongo 和redis

     二. 檔案的許可權

  以上兩點在官方文件都有說明.網上部落格質量良莠不齊,還是官方文件最為可靠

  報錯了要看日誌

  (試過把docker-compose.yml檔案中的啟動命令改為 npm run dev, 雖然能啟動,但是通過外網ip訪問頁面時, 請求js檔案報錯 ERR_CONTENT_LENGTH_MISMATCH 200 (OK))