Files
2025-12-23 19:47:02 +08:00

113 lines
2.8 KiB
Bash

#!/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 $@