package maker import ( "context" "fmt" "os" "path/filepath" "yizhisec.com/hsv2/forge/internal/opt" "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/model" "yizhisec.com/hsv2/forge/pkg/resource" ) // todo, remake minio-init image func (m *maker) Minio(ctx context.Context, storage string) error { var ( err error workdir = filepath.Join(m.workdir, "dependency", "minio") ) logger.Info("☑️ maker.Minio: 开始构建 minio 依赖, workdir = %s", workdir) logger.Debug("☑️ maker.Minio: 构建工作目录, workdir = %s", workdir) _ = os.RemoveAll(workdir) if err = os.MkdirAll(workdir, 0755); err != nil { logger.Debug("❌ maker.Minio: 创建工作目录失败, workdir = %s, err = %v", workdir, err) return err } logger.Debug("✅ maker.Minio: 创建工作目录成功, workdir = %s", workdir) filename := filepath.Join(workdir, "minio.yaml") logger.Debug("☑️ maker.Minio: 准备资源文件, filename = %s, storage = %s", filename, storage) bs := []byte(fmt.Sprintf(resource.YAMLMinIO, storage)) if err = os.WriteFile(filename, bs, 0644); err != nil { logger.Debug("❌ maker.Minio: 写入资源文件失败, filename = %s, err = %v", filename, err) return err } logger.Debug("✅ maker.Minio: 准备资源文件成功, filename = %s", filename) logger.Debug("☑️ maker.Minio: 开始获取所需镜像...") var images = []*model.Image{ {Name: opt.IMAGE_MINIO_BASE, Fallback: "", Save: "minio-init.tar"}, {Name: opt.IMAGE_MINIO, Fallback: "", Save: "minio.tar"}, } for _, image := range images { opts := []ImageOpt{ WithImageFallback(image.Fallback), WithImageSave(filepath.Join(workdir, image.Save)), WithImageForcePull(image.Force), } if err := m.Image(ctx, image.Name, opts...); err != nil { logger.Error("❌ maker.Minio: 获取镜像失败: %s, 可以手动获取后重试", image.Name) logger.Debug("❌ maker.Minio: 获取镜像失败: %s, %v", image.Name, err) return err } } logger.Debug("✅ maker.Minio: 获取所需镜像成功!!!") logger.Info("✅ maker.Minio: 构建 minio 依赖成功, workdir = %s", workdir) return nil }