浏览代码

refactor(deploy): 重构部署脚本并优化日志处理- 精简部署脚本,移除冗余步骤
- 创建日志目录结构,确保日志文件正确存放
- 更新容器挂载路径,使用相对路径以适应不同环境
- 优化日志初始化过程,支持环境变量配置
- 增加调试信息输出,便于问题排查

fusu 3 月之前
父节点
当前提交
17b8713b2b
共有 2 个文件被更改,包括 39 次插入10 次删除
  1. 7 10
      deploy/deploy.sh
  2. 32 0
      pkg/log/log.go

+ 7 - 10
deploy/deploy.sh

@@ -39,13 +39,10 @@ mkdir -p /www/wwwroot/nunu/storage/logs
 # 创建按天分割的日志目录结构
 current_date=$(date +"%Y-%m-%d")
 
-echo "当前日期: ${current_date}"
-echo "创建日志文件..."
+echo "===== 创建日志目录 (当前日期: ${current_date}) ====="
+mkdir -p /www/wwwroot/nunu/storage/logs/
 
-# 确保目录存在
-mkdir -p "/www/wwwroot/nunu/storage/logs"
-
-# 创建日志文件并设置权限
+# 创建日志文件并设置正确的权限
 touch "/www/wwwroot/nunu/storage/logs/api-${current_date}.log"
 touch "/www/wwwroot/nunu/storage/logs/task-${current_date}.log"
 touch "/www/wwwroot/nunu/storage/logs/server.log"
@@ -99,8 +96,8 @@ if [ "$BUILD_API" = true ]; then
       -e TZ=Asia/Shanghai \
       -e SERVICE_TYPE=api \
       -p 8000:8000 \
-      -v /www/wwwroot/nunu/storage:/app/storage \
-      -v /www/wwwroot/nunu/config:/app/config \
+      -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
@@ -125,8 +122,8 @@ if [ "$BUILD_TASK" = true ]; then
     docker run -d --restart=always --name nunu-task \
       -e TZ=Asia/Shanghai \
       -e SERVICE_TYPE=task \
-      -v /www/wwwroot/nunu/storage:/app/storage \
-      -v /www/wwwroot/nunu/config:/app/config \
+      -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

+ 32 - 0
pkg/log/log.go

@@ -10,6 +10,7 @@ import (
 	"gopkg.in/natefinch/lumberjack.v2"
 	"os"
 	"path/filepath"
+	"strings"
 	"time"
 )
 
@@ -36,6 +37,14 @@ func NewLog(conf *viper.Viper) *Logger {
 func NewServiceLog(conf *viper.Viper, serviceType ServiceType) *Logger {
 	var logPath string
 
+	// 从环境变量检查服务类型
+	envServiceType := os.Getenv("SERVICE_TYPE")
+	if envServiceType == "api" {
+		serviceType = API
+	} else if envServiceType == "task" {
+		serviceType = Task
+	}
+
 	// 根据服务类型和日期生成日志文件名
 	logFormat := conf.GetString("log.log_format") // 日期格式,如"2006-01-02"
 	// 确保有默认的日期格式
@@ -44,6 +53,10 @@ func NewServiceLog(conf *viper.Viper, serviceType ServiceType) *Logger {
 	}
 	currentDate := time.Now().Format(logFormat)
 
+	// 显示调试信息
+	fmt.Printf("[日志初始化] 服务类型: %s, 日期: %s\n",
+		serviceTypeToString(serviceType), currentDate)
+
 	if serviceType == API && conf.IsSet("log.api_log_file") {
 		// 使用API日志路径
 		logPath = conf.GetString("log.api_log_file")
@@ -57,6 +70,25 @@ func NewServiceLog(conf *viper.Viper, serviceType ServiceType) *Logger {
 		logPath = conf.GetString("log.log_file_name")
 	}
 
+	// 处理相对路径,兼容不同的工作目录
+	if strings.HasPrefix(logPath, "./") {
+		basePath := "/data/app" // 容器中的日志基础路径
+		if _, err := os.Stat(basePath); os.IsNotExist(err) {
+			// 如果/data/app不存在,则使用当前目录
+			workDir, err := os.Getwd()
+			if err == nil {
+				basePath = workDir
+			} else {
+				basePath = "."
+			}
+		}
+		// 将相对路径转换为绝对路径
+		logPath = strings.Replace(logPath, "./", basePath+"/", 1)
+	}
+
+	// 显示实际使用的日志路径
+	fmt.Printf("[日志路径] %s\n", logPath)
+
 	// 确保日志目录存在
 	if err := ensureDirExists(logPath); err != nil {
 		// 如果创建目录失败,回退到临时目录