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() +}