一. 安装docker与docker-compose
建议直接参照官方文档,不再赘述
Ubuntu下安装Docker
Ubuntu下安装docker-compose
二. 创建easy-mock文件夹并建立docker-compose文档与自定义配置
-
创建并进入easy-mock文件夹
mkdir /usr/local/docker/easy-mock cd /usr/local/docker/easy-mock
-
创建docker-compose.yml文档
vim docker-compose.yml
增加以下内容
version: '3' services: mongodb: image: mongo:3.4.1 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 # 这里后面原命令为npm start,可能会无法启动(easymock的容器无限重启),推荐改为npm run dev command: /bin/bash -c "npm run dev" ports: - 7300:7300 volumes: # 日志地址,根据需要修改为本地地址 - './logs:/home/easy-mock/easy-mock/logs' # 配置地址,请使用本地配置地址替换(同一目录下创建production.json) - './production.json:/home/easy-mock/easy-mock/config/production.json' networks: - easy-mock restart: always networks: easy-mock:
-
创建自定义配置
vim production.json
新增以下内容 (与普通部署方式不同的是,“db"和"redis"条目需要将localhost改为"mongodb"和"redis”)
{ "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 } }, "fe": { "copyright": "", "storageNamespace": "easy-mock_", "timeout": 25000, "publicPath": "/dist/" } }
三. 使用docker-compose启动
-
由于使用远程shell连接服务器,推荐使用screen防止关闭连接后容器停止
screen -mS easymock
-
确保在yml文件所在目录
/usr/local/docker/easy-mock
-
启动
# 启动并进入容器(推荐第一次启动这样启动,可以看到运行过程与报错信息) docker-compose up # 以后台守护进程启动 docker-compose up -d
-
使用反代理对easy-mock本地服务器地址进行代理
Nginx反代理安装与配置 见我另一文章我在部署后遇到了一个问题,虽然已经能够访问到easy-mock的页面了,但是该页面资源缺失报错,vendor.js它请求返回是200的成功码,但是在network里最后变成了(failed)导致整个页面虽然加载成功但逻辑js资源缺失,点不动登录。在easy-mock-docker 的 github-Issues里有人提到过,但并未有人提到直接解决的方法,最后试了一下反代理(用的是https,http应该也能行)成功了,于是在这个Issues里留下了我的解决方案。
-
访问部署好的easy-mock