| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 | #!/bin/bash#fonts colorGreen="\033[32m"Red="\033[31m"GreenBG="\033[42;37m"RedBG="\033[41;37m"Font="\033[0m"#notification informationOK="${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_initcheck_dockerif [ $# -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 "$@"    fielse    $COMPOSE psfi
 |