diff --git a/service/exec/exec.go b/service/exec/exec.go index 87c86c6..4e71480 100644 --- a/service/exec/exec.go +++ b/service/exec/exec.go @@ -19,15 +19,33 @@ var DockerContainer *dockerContainer func init() { //检测docker服务是否已运行 go func() { + maxRetries := 5 + retryCount := 0 for { // Initialize DockerContainer with memory, CPU, and disk limits - DockerContainer, err := NewDockerContainer(int64(2*1024*1024*1024), int64(1000000000)) + container, err := NewDockerContainer(int64(2*1024*1024*1024), int64(1000000000)) if err != nil { - log.Println("NewDockerContainer failed", err) - time.Sleep(1 * time.Second) + retryCount++ + if retryCount > maxRetries { + log.Fatalf("Failed to initialize Docker container after %d retries: %v", maxRetries, err) + } + log.Printf("NewDockerContainer failed (attempt %d/%d): %v", retryCount, maxRetries, err) + time.Sleep(2 * time.Second) continue } - DockerContainer.CreateAndStartContainer() + + if err := container.CreateAndStartContainer(); err != nil { + retryCount++ + if retryCount > maxRetries { + log.Fatalf("Failed to create and start container after %d retries: %v", maxRetries, err) + } + log.Printf("CreateAndStartContainer failed (attempt %d/%d): %v", retryCount, maxRetries, err) + time.Sleep(2 * time.Second) + continue + } + + DockerContainer = container + log.Println("Docker container successfully initialized") return } }()