代码拉取完成,页面将自动刷新
#!/bin/bash
#fonts color
Green="\033[32m"
Red="\033[31m"
GreenBG="\033[42;37m"
RedBG="\033[41;37m"
Font="\033[0m"
#notification information
OK="${Green}[OK]${Font}"
Error="${Red}[错误]${Font}"
cur_path="$(pwd)"
judge() {
if [[ 0 -eq $? ]]; then
echo -e "${OK} ${GreenBG} $1 完成 ${Font}"
sleep 1
else
echo -e "${Error} ${RedBG} $1 失败${Font}"
exit 1
fi
}
supervisorctl_restart() {
RES=`docker-compose exec php /bin/bash -c "supervisorctl update $1"`
if [ -z "$RES" ];then
docker-compose exec php /bin/bash -c "supervisorctl restart $1"
else
echo -e "$RES"
fi
}
check_docker() {
docker --version &> /dev/null
if [ $? -ne 0 ]; then
echo -e "${Error} ${RedBG} 未安装 Docker!${Font}"
exit 1
fi
docker-compose --version &> /dev/null
if [ $? -ne 0 ]; then
echo -e "${Error} ${RedBG} 未安装 Docker-compose!${Font}"
exit 1
fi
}
check_node() {
npm --version > /dev/null
if [ $? -ne 0 ]; then
echo -e "${Error} ${RedBG} 未安装nodejs!${Font}"
exit 1
fi
}
env_get() {
key=$1
value=`cat ${cur_path}/.env | grep "^$key=" | awk -F '=' '{print $2}'`
echo "$value"
}
env_set() {
key=$1
val=$2
exist=`cat ${cur_path}/.env | grep "^$key="`
if [ -z "$exist" ];then
echo "$key=$val" >> $cur_path/.env
else
command="sed -i '/^$key=/c\\$key=$val' /www/.env"
docker run -it --rm -v ${cur_path}:/www alpine sh -c "$command"
fi
}
env_init() {
if [ ! -f ".env" ];then
cp .env.docker .env
fi
if [ -z "$(env_get DB_ROOT_PASSWORD)" ];then
env_set DB_ROOT_PASSWORD "$(docker run -it --rm alpine sh -c "date +%s%N | md5sum | cut -c 1-16")"
fi
if [ -z "$(env_get DOCKER_ID)" ];then
env_set DOCKER_ID "$(docker run -it --rm alpine sh -c "date +%s%N | md5sum | cut -c 1-6")"
fi
}
####################################################################################
####################################################################################
####################################################################################
COMPOSE="docker-compose"
env_init
check_docker
if [ $# -gt 0 ];then
if [[ "$1" == "init" ]] || [[ "$1" == "install" ]]; then
shift 1
networkid=`docker network ls | grep "wookteam-networks-" | awk '{print $1}'`
if [ -n "$networkid" ]; then
docker network rm "$networkid" > /dev/null
fi
rm -rf composer.lock
rm -rf package-lock.json
mkdir -p ${cur_path}/docker/log/supervisor
mkdir -p ${cur_path}/docker/mariadb/data
chmod -R 777 ${cur_path}/docker/mariadb/data
$COMPOSE up -d
$COMPOSE restart php
$COMPOSE exec php /bin/bash -c "composer install"
[ -z "$(env_get APP_KEY)" ] && $COMPOSE exec php /bin/bash -c "php artisan key:generate"
$COMPOSE exec php /bin/bash -c "php artisan migrate --seed"
$COMPOSE exec php /bin/bash -c "php bin/wookteam --port=8000 --ssl=44300"
$COMPOSE exec php /bin/bash -c "php bin/wookteam --wookteam=prod"
$COMPOSE stop
$COMPOSE start
elif [[ "$1" == "update" ]]; then
shift 1
git fetch --all
git reset --hard origin/$(git branch | sed -n -e 's/^\* \(.*\)/\1/p')
git pull
$COMPOSE exec php /bin/bash -c "composer update"
$COMPOSE exec php /bin/bash -c "php artisan migrate"
supervisorctl_restart php
elif [[ "$1" == "uninstall" ]]; then
shift 1
read -rp "确定要卸载(含:删除容器、数据库、日志)吗?(y/n): " uninstall
[[ -z ${uninstall} ]] && uninstall="N"
case $uninstall in
[yY][eE][sS] | [yY])
echo -e "${RedBG} 开始卸载... ${Font}"
;;
*)
echo -e "${GreenBG} 终止卸载。 ${Font}"
exit 2
;;
esac
docker-compose rm -fs
rm -rf "./docker/mariadb/data"
rm -rf "./docker/log/supervisor"
find "./storage/logs" -name "*.log" | xargs rm -rf
echo -e "${OK} ${GreenBG} 卸载完成 ${Font}"
elif [[ "$1" == "dev" ]]; then
shift 1
check_node
$COMPOSE exec php /bin/bash -c "php bin/wookteam --wookteam=dev"
supervisorctl_restart php
npm run hot
elif [[ "$1" == "prod" ]]; then
shift 1
check_node
$COMPOSE exec php /bin/bash -c "php bin/wookteam --wookteam=prod"
supervisorctl_restart php
rm -rf "./public/js/build"
npm run prod
elif [[ "$1" == "artisan" ]]; then
shift 1
e="php artisan $@" && $COMPOSE exec php /bin/bash -c "$e"
elif [[ "$1" == "php" ]]; then
shift 1
e="php $@" && $COMPOSE exec php /bin/bash -c "$e"
elif [[ "$1" == "composer" ]]; then
shift 1
e="composer $@" && $COMPOSE exec php /bin/bash -c "$e"
elif [[ "$1" == "supervisorctl" ]]; then
shift 1
e="supervisorctl $@" && $COMPOSE exec php /bin/bash -c "$e"
elif [[ "$1" == "test" ]]; then
shift 1
e="./vendor/bin/phpunit $@" && $COMPOSE exec php /bin/bash -c "$e"
elif [[ "$1" == "npm" ]]; then
shift 1
e="npm $@" && $COMPOSE exec php /bin/bash -c "$e"
elif [[ "$1" == "yarn" ]]; then
shift 1
e="yarn $@" && $COMPOSE exec php /bin/bash -c "$e"
elif [[ "$1" == "mysql" ]]; then
shift 1
if [[ "$@" == "bak" ]];then
chmod -R 777 ${cur_path}/docker/mariadb/bak
database=$(env_get DB_DATABASE)
password=$(env_get DB_ROOT_PASSWORD)
filename="${cur_path}/docker/mariadb/bak/${database}_$(date "+%Y%m%d%H%M%S").sql.gz"
$COMPOSE exec mariadb /bin/sh -c "exec mysqldump --databases $database -uroot -p\"$password\"" | gzip > $filename
judge "备份数据库"
[ -f "$filename" ] && echo -e "备份文件:$filename"
else
e="mysql $@" && $COMPOSE exec mariadb /bin/sh -c "$e"
fi
elif [[ "$1" == "restart" ]]; then
shift 1
$COMPOSE stop "$@"
$COMPOSE start "$@"
else
$COMPOSE "$@"
fi
else
$COMPOSE ps
fi
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。