package docker import ( "sync" "github.com/docker/docker/client" "gitee.ltd/lxh/wechat-robot/internal/config" ) var ( dockerClient *client.Client clientOnce sync.Once clientErr error ) // InitClient 初始化Docker客户端 func InitClient(cfg *config.DockerConfig) error { clientOnce.Do(func() { options := []client.Opt{ client.WithAPIVersionNegotiation(), } // 如果指定了Docker主机地址 if cfg.Host != "" { options = append(options, client.WithHost(cfg.Host)) } // 如果指定了API版本 if cfg.APIVersion != "" { options = append(options, client.WithVersion(cfg.APIVersion)) } // 创建Docker客户端 dockerClient, clientErr = client.NewClientWithOpts(options...) }) return clientErr } // GetClient 获取Docker客户端实例 func GetClient() *client.Client { if dockerClient == nil { panic("Docker client not initialized, call InitClient first") } return dockerClient } // CloseClient 关闭Docker客户端 func CloseClient() error { if dockerClient != nil { return dockerClient.Close() } return nil }