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是你本机代理的地址.

mac设置终端代理

注意如下命令需要在你的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