From b4e0ae21cb02b851abd512a2b1f02205e11fe257 Mon Sep 17 00:00:00 2001 From: lixiangwuxian Date: Sat, 29 Mar 2025 14:50:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=90=8D=E4=B8=BA=20log.txt=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=81=9C=E6=AD=A2=E8=BF=90=E8=A1=8C=E6=A0=87?= =?UTF-8?q?=E5=BF=97=E4=BB=A5=E9=81=BF=E5=85=8D=E4=B8=BB=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E9=98=BB=E5=A1=9E=EF=BC=8C=E5=B9=B6=E4=BC=98=E5=8C=96=20Docker?= =?UTF-8?q?Container=20=E5=88=9D=E5=A7=8B=E5=8C=96=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BB=A5=E7=A1=AE=E4=BF=9D=E6=9C=8D=E5=8A=A1=E6=AD=A3=E5=B8=B8?= =?UTF-8?q?=E8=BF=90=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.go | 8 ++++++-- service/exec/exec.go | 18 +++++++++++++++--- sqlite3/db.go | 4 ++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/main.go b/main.go index 02b3bc1..1513208 100644 --- a/main.go +++ b/main.go @@ -24,7 +24,7 @@ func init() { } // 设置日志输出到文件 - logFile, err := os.OpenFile(filepath.Join("logs", "panic.log"), os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644) + logFile, err := os.OpenFile(filepath.Join("logs", "log.txt"), os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644) if err != nil { log.Printf("打开日志文件失败: %v", err) return @@ -33,6 +33,7 @@ func init() { } func main() { + var stopRun = false // 创建 WebSocket 客户端 defer func() { if err := recover(); err != nil { @@ -44,13 +45,16 @@ func main() { // 写入日志文件 log.Print(errMsg) } + stopRun = true + main() }() defer exec.DockerContainer.RemoveContainer() + defer sqlite3.CloseDB() gin.SetMode(gin.ReleaseMode) sqlite3.InitDB() go func() { const reconnectDelay = 5 * time.Second - for { + for !stopRun { client, err := wsclient.NewWebSocketClient("ws", config.ConfigManager.GetConfig().Management.NapcatWsSrv, "") if err != nil { log.Printf("WebSocket连接失败: %v, %v 后重试", err, reconnectDelay) diff --git a/service/exec/exec.go b/service/exec/exec.go index 0608a81..87c86c6 100644 --- a/service/exec/exec.go +++ b/service/exec/exec.go @@ -5,6 +5,7 @@ import ( "context" "fmt" "io" + "log" "time" "github.com/docker/docker/api/types/container" @@ -16,9 +17,20 @@ import ( var DockerContainer *dockerContainer func init() { - // Initialize DockerContainer with memory, CPU, and disk limits - DockerContainer, _ = NewDockerContainer(int64(2*1024*1024*1024), int64(1000000000)) - DockerContainer.CreateAndStartContainer() + //检测docker服务是否已运行 + go func() { + for { + // Initialize DockerContainer with memory, CPU, and disk limits + DockerContainer, err := NewDockerContainer(int64(2*1024*1024*1024), int64(1000000000)) + if err != nil { + log.Println("NewDockerContainer failed", err) + time.Sleep(1 * time.Second) + continue + } + DockerContainer.CreateAndStartContainer() + return + } + }() } type dockerContainer struct { diff --git a/sqlite3/db.go b/sqlite3/db.go index 1a88264..2b392c6 100644 --- a/sqlite3/db.go +++ b/sqlite3/db.go @@ -30,3 +30,7 @@ func GetDB() *sqlx.DB { func GetTran() (*sqlx.Tx, error) { return db.Beginx() } + +func CloseDB() { + db.Close() +}