#!/usr/bin/env bash TARBALL_PATH=$PWD NIC=$(route -n | awk '{print $1,$8}' | grep "0.0.0.0" | awk '{print $2}') LOCAL_IP=$(ifconfig $NIC | grep inet | grep -v 127.0.0.1 | grep -v inet6 | awk '{print $2}' | tr -d "addr:") WORK_DIR=/opt/factory-digital-app CONFIG_DIR=/opt/config/factory-digital-app LOG_DIR=$(pwd)/deploy_logs/ LOG_FILE="${LOG_DIR}/demo_$(date '+%Y%m%d').log" if [[ ! -d "${LOG_DIR}" ]]; then mkdir -p "${LOG_DIR}" touch "$LOG_FILE" fi # 定义颜色 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[0;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color function info() { local MSG=$1 local COLOR=${2:-$NC} # 默认不使用颜色 local DATE=$(date '+%Y-%m-%d %H:%M:%S') # 打印到终端,使用指定的颜色 echo -e "${COLOR}[${DATE}] ${MSG}${NC}" # 追加到日志文件,无颜色 echo "[${DATE}] ${MSG}" >>"${LOG_FILE}" } function prepare() { info "[Preparing deploy ..............]" $YELLOW # 检查部署目录是否存在 if [[ ! -d $WORK_DIR ]]; then mkdir -p $WORK_DIR else info "[$WORK_DIR] folder has existed! prepare check fail!" exit 1 fi if [[ ! -d $CONFIG_DIR ]]; then mkdir -p $CONFIG_DIR fi docker_process=$(docker ps | grep factory-digital-app| wc -l) if [[ $docker_process -gt 0 ]]; then info "factory-digital-appprocess has existed; prepare check fail!" exit 1 fi dos2unix $TARBALL_PATH/* cp $TARBALL_PATH/docker-compose.yml $WORK_DIR/ cp $TARBALL_PATH/.env $WORK_DIR/ cp $TARBALL_PATH/*.env $CONFIG_DIR/ if [[ $LOCAL_IP == "172.16.0.9" || $LOCAL_IP == "172.16.0.8" ]]; then echo "[双机环境]" echo -e "\nKAFKACLOUD_URL=172.16.0.8:9092,172.16.0.9:9092\nMYSQL_URL=172.16.0.4\nREDIS_URL=172.16.0.7" >> $CONFIG_DIR/variables.env else echo "[单机环境]" echo -e "\nKAFKACLOUD_URL=172.16.0.3:9092nMYSQL_URL=172.16.0.3\nREDIS_URL=172.16.0.3" >> $CONFIG_DIR/variables.env sed -i 's/172.16.0.3/'$LOCAL_IP'/g' $CONFIG_DIR/variables.env fi } function deploy() { info "[Deploying factory-digital-app ..............]" $YELLOW cd $WORK_DIR && docker-compose up -d } function post_handle() { info "[post handle factory-digital-app ..............]" $YELLOW } function uninstall() { docker-compose down rm -rf $WORK_DIR rm -rf $CONFIG_DIR } function main() { case $1 in prepare) prepare ;; deploy) deploy ;; postHandle) post_handle ;; all) prepare deploy post_handle ;; local) docker login -u cn-south-2@TQ0BQOAML1V5Y5HZ9ISP -p c6ec8441a31e8779899f060ee4a9146969b81f439ef5664cd2f5b3bd81cba962 swr.cn-south-2.myhuaweicloud.com export IMAGE_URL=swr.cn-south-2.myhuaweicloud.com/yelink_appstore_test/ prepare deploy post_handle ;; uninstall) uninstall ;; *) fatal "Unsupported params" ;; esac } main $@