Browse Source

refactor(log): 重构日志模块并优化日志记录功能- 新增按服务类型分割日志的功能,支持API和Task日志分开记录
- 增加按日期滚动日志文件的功能,提高日志管理的灵活性- 优化日志格式和编码,提高日志的可读性和性能
- 添加日志目录自动创建功能,确保日志记录的可靠性
- 更新日志配置参数,提供更多定制选项

fusu 3 tháng trước cách đây
mục cha
commit
37b1fc91f1
1 tập tin đã thay đổi với 115 bổ sung0 xóa
  1. 115 0
      deploy/deploy.sh

+ 115 - 0
deploy/deploy.sh

@@ -0,0 +1,115 @@
+#!/bin/bash
+
+# 参数解析
+BUILD_API=false
+BUILD_TASK=false
+NO_CACHE=false
+FORCE_RECREATE=false
+
+while [ $# -gt 0 ]; do
+  case "$1" in
+    --api) BUILD_API=true ;;
+    --task) BUILD_TASK=true ;;
+    --all) BUILD_API=true; BUILD_TASK=true ;;
+    --no-cache) NO_CACHE=true ;;
+    --force) FORCE_RECREATE=true ;;
+    *) echo "未知参数: $1"; exit 1 ;;
+  esac
+  shift
+done
+
+# 默认构建全部
+if [ "$BUILD_API" = false ] && [ "$BUILD_TASK" = false ]; then
+  BUILD_API=true
+  BUILD_TASK=true
+fi
+
+# 构建参数
+BUILD_ARGS=""
+if [ "$NO_CACHE" = true ]; then
+  BUILD_ARGS="$BUILD_ARGS --no-cache"
+fi
+
+echo "开始部署..."
+
+# 确保目录存在
+echo "创建日志目录并设置权限"
+mkdir -p /www/wwwroot/nunu/storage/logs
+
+# 创建按天分割的日志目录结构
+current_date=$(date +"%Y-%m-%d")
+touch "/www/wwwroot/nunu/storage/logs/api-${current_date}.log"
+touch "/www/wwwroot/nunu/storage/logs/task-${current_date}.log"
+
+# 设置权限
+chmod -R 777 /www/wwwroot/nunu/storage
+
+# 创建Docker卷(用于缓存Go构建)
+if ! docker volume inspect go-mod-cache > /dev/null 2>&1; then
+  echo "创建Go模块缓存卷..."
+  docker volume create go-mod-cache
+fi
+
+# 构建并部署API服务
+if [ "$BUILD_API" = true ]; then
+  echo "构建API服务..."
+  docker build $BUILD_ARGS -t nunu-api:v1 \
+    --build-arg APP_NAME=app \
+    --build-arg APP_RELATIVE_PATH=./cmd/server/main.go \
+    -f deploy/build/Dockerfile .
+
+  if [ "$FORCE_RECREATE" = true ] || ! docker ps -q -f name=nunu-api > /dev/null 2>&1; then
+    echo "停止并移除旧的API容器..."
+    docker stop nunu-api 2>/dev/null || true
+    docker rm nunu-api 2>/dev/null || true
+    
+    echo "启动新的API容器..."
+    docker run -d --restart=always --name nunu-api \
+      -e TZ=Asia/Shanghai \
+      -e SERVICE_TYPE=api \
+      -p 8000:8000 \
+      -v /www/wwwroot/nunu/storage:/data/app/storage \
+      -v /www/wwwroot/nunu/config:/data/app/config \
+      -v go-mod-cache:/go/pkg/mod \
+      nunu-api:v1
+  else
+    echo "API容器已在运行中,如需重新创建请使用 --force 参数"
+  fi
+fi
+
+# 构建并部署Task服务
+if [ "$BUILD_TASK" = true ]; then
+  echo "构建Task服务..."
+  docker build $BUILD_ARGS -t nunu-task:v1 \
+    --build-arg APP_NAME=task \
+    --build-arg APP_RELATIVE_PATH=./cmd/task/main.go \
+    -f deploy/build/Dockerfile .
+
+  if [ "$FORCE_RECREATE" = true ] || ! docker ps -q -f name=nunu-task > /dev/null 2>&1; then
+    echo "停止并移除旧的Task容器..."
+    docker stop nunu-task 2>/dev/null || true
+    docker rm nunu-task 2>/dev/null || true
+    
+    echo "启动新的Task容器..."
+    docker run -d --restart=always --name nunu-task \
+      -e TZ=Asia/Shanghai \
+      -e SERVICE_TYPE=task \
+      -v /www/wwwroot/nunu/storage:/data/app/storage \
+      -v /www/wwwroot/nunu/config:/data/app/config \
+      -v go-mod-cache:/go/pkg/mod \
+      nunu-task:v1
+  else
+    echo "Task容器已在运行中,如需重新创建请使用 --force 参数"
+  fi
+fi
+
+echo "\n部署完成!"
+[ "$BUILD_API" = true ] && echo "API服务运行在端口: 8000"
+echo "日志保存在: /www/wwwroot/nunu/storage/logs/server.log"
+echo "\n使用方法:"
+echo "  ./deploy.sh --api     # 仅构建和部署API服务"
+echo "  ./deploy.sh --task    # 仅构建和部署Task服务"
+echo "  ./deploy.sh --all     # 构建和部署所有服务(默认)"
+echo "  ./deploy.sh --no-cache # 不使用Docker缓存构建"
+echo "  ./deploy.sh --force   # 强制重新创建容器"
+