Development - marmot-cn/marmot-framework GitHub Wiki
开发环境
开发环境使用smart
脚本进行一键化部署.
目录
前置条件(必读)
- 代码仓库有相应的读取权限
- 安装
docker
- 安装
docker-compsoer
mac
版的docker
需要至少分配4G内存
如何使用
注意所有的安装, 或者后续需要更新, 都必须在当前工作目录(即你第一次安装的目录下执行)
一键化安装
curl https://credit-ops.oss-cn-hangzhou.aliyuncs.com/pingxiang/2.0/environment | sh
使用
./smart
萍乡项目控制脚本
使用方法: smart command. 如: ./smart start 启动服务
READ ME
绑定hosts文件 portal.pingxiang.com 127.0.0.1 门户网
绑定hosts文件 gov.pingxiang.com 127.0.0.1 政务网
绑定hosts文件 share.pingxiang.com 127.0.0.1 共享网
绑定hosts文件 app.pingxiang.com 127.0.0.1 app
1. install: 安装服务
2. start: 启动服务
3. stop: 关闭服务
4. clear 清除环境,可以清除容器后重新启动
5. upgrade 更新环境
6. -v | version 查看当前版本
7. -cv | checkVersion 查看最新版本
8. -uv | updateVersion 查看最新版本
install
smart install
即可进行一键自动化安装.
默认会在当前目录添加.version
文件, 该文件记录当前开发环境的小版本号.
额外需要在本机hosts
文件绑定相应的域名和ip地址
问题
composer
过慢
下载这是因为中国composer
代理出现问题, 需要在外网下载composer
包. 可以设置代理来暂时解决问题.
ip:port
是你本机代理的地址.
注意如下命令需要在你的phpfpm
容器里面运行.
export http_proxy="http://ip:port"
export https_proxy="http://ip:port"
start
./smart start
开启所有服务容器
问题
80端口占用
我们默认会占用80
端口. 所以本机如果有80
端口被绑定了则会出现反向代理容器启动失败.
stop
./smart stop
开启所有服务容器
clear
./smart clear
清理所有服务容器
upgrade
./smart upgrade
升级所有服务镜像
-v | version
检查当前环境的版本号.
./smart -v
20180822
-cv checkVersion
./smart -cv
20180823(远程服务器可更新版本号) ==> 备注(该版本备注)
检查远程服务器可用版本号.
-uv | updateVersion
升级当前服开发环境, 会自动检测当前版本与服务端差异的版本, 然后升级所有版本.
开发一个新的更新版本
更新 version 文件
文件位置credit-ops/pinxiang/2.0/version
文件格式内容为:
版本号(yyyymmdd) 版本备注
中间的空格为tab
键.
示例可见:
cat version
20180821 初始化安装
20180822 测试一个新版本
20180821
是我们默认的第一个版本20180822
是我们刚刚测试添加的版本.
新添加的版本需要记录在version
文件内. 这样所有客户端都可以获取最新的配置.
添加一个对应的版本文件
创建yyyymmdd
文件夹, 该日期对应的就是上述version
文件的版本日期.
按照示例我们需要创建20180822
文件夹.
文件夹内创建update
文件. 文件需要有chmod +x
执行权限.
#!/bin/bash
执行要更新的shell语句
如我们需要更新一个数据库文件.
#!/bin/bash
# 确认环境是启动的
./smart start
# 切换到后端文件夹, 切换到dev分支, 获取最新代码, 跳回原文件夹
cd px-backend && git checkout dev && git pull origin dev && cd ..
# 导入sql文件到数据库内
cat px-backend/database/tmp/xxxx.sql | docker exec -i px-mysql /usr/bin/mysql -uroot -p123456
如何测试
测试函数
在smart
文件里面
'test')
updateVersion
;;
默认隐藏了一个test
选项, ./smart test
可以手动修改调用你的测试项目.
update
脚本
测试- 在本地测试
update
- 上传到
oss
- 通过远程测试
curl https://credit-ops.oss-cn-hangzhou.aliyuncs.com/pingxiang/2.0/yyyymmdd/update | sh
直接调用运行shell
脚本即可.
常见问题
1.mysql 容器无法正常打开
方案一
默认给mysql
容器挂载了目录. 一般访问不了, 如phpmyadmin
无法访问, 或者容器打不开.
添加用户:
sudo groupadd -g 1020 mysql
sudo useradd mysql -u 1020 -g mysql
方案二
chmod -R 777 basement/mysql/mysql
在尝试打开
mysql
cd basement/mysql/
docker-compose up -d
docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------
px-mysql docker-entrypoint.sh mysqld Up 3306/tcp
px-phpmyadmin /home/entrypoint.sh Up 0.0.0.0:10081->80/tcp
如果都是 Up 状态则代表正常
方案三
注意, 如果删除数据会导致对应数据库不能使用.
编辑basement/mysql/docker-compose.yml
, 去掉如下两行:
volumes:
- ./mysql:/var/lib/mysql
2.mongo 容器无法正常打开
方案一
默认给mongo
容器挂载了目录.
如果需要挂载到宿主机上, 需要额外添加用户:
sudo groupadd -g 1010 mongo
sudo useradd mysql -u 1010 -g mongo
方案二
chmod -R 777 basement/mongo/mongo
在尝试打开
mongo
cd basement/mongo/
docker-compose up -d
docker-compose ps
方案三
注意, 如果删除数据会导致对应数据库不能使用.
编辑basement/mongo/docker-compose.yml
, 去掉如下两行:
volumes:
- ./mongo:/data/db
3.es 容器无法正常打开
方案一
默认没有给es
容器挂载了目录.
如果需要挂载到宿主机上, 需要额外添加用户:
sudo groupadd -g 1040 elasticsearch
sudo useradd elasticsearch -u 1040 -g elasticsearch