package docker import ( "context" "github.com/gofiber/fiber/v2/log" ) const ( // WechatBotLabelKey 微信机器人容器标签键 WechatBotLabelKey = "app.type" // WechatBotLabelValue 微信机器人容器标签值 WechatBotLabelValue = "wechat-bot" ) // CreateRobotContainer 创建微信机器人容器 func CreateRobotContainer(ctx context.Context, robotName string, port int) (string, string, error) { // 创建容器标签 labels := map[string]string{ WechatBotLabelKey: WechatBotLabelValue, "robot.name": robotName, } // 创建环境变量 env := []string{ "BOT_NAME=" + robotName, } // 创建容器 containerID, err := CreateContainer(ctx, "wechat-bot-"+robotName, env, labels, port) if err != nil { return "", "", err } // 启动容器 err = StartContainer(ctx, containerID) if err != nil { // 如果启动失败,尝试删除容器 _ = RemoveContainer(ctx, containerID, true) return "", "", err } // 获取容器访问地址 containerHost, err := GetContainerHost(ctx, containerID) if err != nil { log.Warnf("警告: 无法获取容器访问地址: %v", err) containerHost = "localhost:9000" // 使用默认值 } return containerID, containerHost, nil }