1、现阶段的升级方案,在 Rancher 容器升级后,进入 Docker 容器,在命令行中依次运行:
// 开发环境 / 测试环境
php /sobey/www/pcs-api/init --env=Development --overwrite=All
// 演示环境 / 生产环境
php /sobey/www/pcs-api/init --env=Production --overwrite=All
// 数据库迁移(日志的数据库模式,仅在第一次安装时运行)
php /sobey/www/pcs-api/yii migrate --migrationPath=@yii/log/migrations/ --interactive=0
// 数据库迁移(MySQL 5.7.7 之前的版本:innodb_large_prefix=1、innodb_file_format=BARRACUDA)
php /sobey/www/pcs-api/yii migrate --interactive=0
2、现阶段的升级方案所存在的问题在于,有时候 Rancher 容器升级后,运维人员需要在每个容器中皆粘贴运行至少 2 条命令,即第 2、4 条,很容易漏掉某个容器,进而导致程序运行错误,而且存在一定的工作量。准备基于 SHELL 脚本,自动运行命令行,以确保每个容器皆初始化成功,且节省运维人员的工作量。
3、新建 \build\c_files\config\init\pcs-api_init.sh
注:
如果未设置环境变量:PCS_API_CFG_ENV,则设置其默认值为:dev
如果已设置环境变量:PCS_API_CFG_ENV,其值为:dev,则执行命令:php /sobey/www/pcs-api/init –env=Development –overwrite=All;其值为:prod,则执行命令:php /sobey/www/pcs-api/init –env=Production –overwrite=All;否则输出:please set environment variable PCS_API_CFG_ENV dev or prod
如果未设置环境变量:PCS_API_CFG_MIGRATE,则设置其默认值为:false
如果已设置环境变量:PCS_API_CFG_MIGRATE,其值为:true,则依次执行命令:php /sobey/www/pcs-api/yii migrate –migrationPath=@yii/log/migrations/ –interactive=0、php /sobey/www/pcs-api/yii migrate –interactive=0;其值为:false,则输出:running without db migrate;否则输出:please set environment variable PCS_API_CFG_MIGRATE true or false
#!/bin/bash
env | grep PCS_API_CFG_ENV || export PCS_API_CFG_ENV="dev"
if [[ $PCS_API_CFG_ENV == "dev" ]]
then
php /sobey/www/pcs-api/init --env=Development --overwrite=All
elif [[ $PCS_API_CFG_ENV == "prod" ]]
then
php /sobey/www/pcs-api/init --env=Production --overwrite=All
else
echo "please set environment variable PCS_API_CFG_ENV dev or prod"
fi
env | grep PCS_API_CFG_MIGRATE || export PCS_API_CFG_MIGRATE="false"
if [[ $PCS_API_CFG_MIGRATE == "true" ]]
then
php /sobey/www/pcs-api/yii migrate --migrationPath=@yii/log/migrations/ --interactive=0
php /sobey/www/pcs-api/yii migrate --interactive=0
elif [[ $PCS_API_CFG_MIGRATE == "false" ]]
then
echo "running without db migrate"
else
echo "please set environment variable PCS_API_CFG_MIGRATE true or false"
fi
4、删除开发环境中的数据库中的所有表,未设置环境变量:PCS_API_CFG_ENV、PCS_API_CFG_MIGRATE,以测试未设置环境变量时,默认值的设置是否生效&#x