前言
最近想试试electron-vue,查考了一位大咖的开源项目,发现运行需要easy-mock。本想在本地部署easy-mock,但是看都那一堆环境要求头有点大,于是就想到了docker。一查还真有大牛已经做好。那就拿来主义了。
整个部署大部分时间花在了相关安装包的下载上面。特对相关过程做一记录以备自查或者参考。
正文
ubuntu 部署docker 总体上分为四步
第一步:安装docker
第二步:安装docker-compose
第三步:部署easy-mock-docker镜像
第四步:启动docker
默认的源指向外部,经常会在下载的过程中断掉或者丢失,所有需要配置好相关的源 。
第一步:安装docker
经测试下面方法有效:
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装 Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
第二步:安装docker-compose
按照官方的说明。我下载了一晚上都没下载下来。
后来通过:http://get.daocloud.io/#install-compose,提供的源不到20分钟搞定。
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
第三步:部署easy-mock-docker镜像
部署前需要配置好docker的镜像源。
国内的加速站点有:
https://registry.docker-cn.com
http://hub-mirror.c.163.com
https://3laho3y3.mirror.aliyuncs.com
http://f1361db2.m.daocloud.io
https://mirror.ccs.tencentyun.com
在:/etc/docker ,目录下创建文件daemon.json 文件内容如下:
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
配置完源,在docker-compose 目录下也就是: /usr/local/bin/ 下创建一个文件 docker-compose.yml 文件。
文件内容如下:(https://github.com/easy-mock/easy-mock-docker)
version: '3'
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:
接下来就是部署镜像以及启动服务
在命令行:/usr/local/bin/目录下执行(或者需要指docker-compose.yml的路径): docker-compose up
运行该命令会完成相关镜像的pull,并会尝试运行,但是按照上述配置会报下述的错误:
1.Error:Config file /home/easy-mock/easy-mock/config/production.json cannot be read
2. error : eacces:permission denided,open 'log'
即使根据 上述错误地址:创建相关的文件夹及文件,也不能解决这个错误。
对比命令docker-compose up运行前后。发现在/usr/local/bin/目录下面多出了data/db;logs;production.json三个目录,由此大致推出该配置文件读取的是当前目录而非根目录。
于此上述配置项可以修改为:
其中production.json 文件来源为:(https://github.com/easy-mock/easy-mock )主义修改数据看及,缓存的host。
{
"port": 7300,
"host": "0.0.0.0",
"pageSize": 30,
"proxy": false,
//"db": "mongodb://localhost/easy-mock",
"db": "mongodb://mongodb/easy-mock",
"unsplashClientId": "",
"redis": {
"keyPrefix": "[Easy Mock]",
"port": 6379,
//"host": "localhost",
"host": "redis",
"password": "",
"db": 0
},
"blackList": {
"projects": [], // projectId, e.g."5a4495e16ef711102113e500"
"ips": [] // ip, e.g. "127.0.0.1"
},
"rateLimit": { // https://github.com/koajs/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": "", // Set server to enable LDAP login. e.g. "ldap://localhost:389" or "ldaps://localhost:389"(use SSL)
"bindDN": "", // Username,e.g. "cn=admin,dc=example,dc=com"
"password": "",
"filter": {
"base": "", // Base where we can search for users,e.g. "dc=example,dc=com"
"attributeName": "" // e.g. "mail" or "email" etc.
}
},
"fe": {
"copyright": "",
"storageNamespace": "easy-mock_",
"timeout": 25000,
"publicPath": "/dist/"
}
}
完成上述工作,运行
docker-compose up 即可顺利启动easy-mock-docker。
第四步:启动docker
执行命令 docker-compose up 即可启动容器。
其他: